vite/rollup.js を使用して Node.js の os モジュールを拡張します
P粉176151589
2023-08-24 16:17:55
<p>私は <code>opensea-js</code> パッケージを使用する Vite プロジェクトに取り組んでいます。このパッケージは <code>xhr2-cookies</code> に依存しており、<code>os</code>、<code>http</code>、<code>https</code> などをインポートします。内部ノードモジュール。 </p>
<p>opensea メソッドを呼び出そうとすると、次のエラーが発生します: </p>
<pre class="brush:php;toolbar:false;">キャッチされません (約束内) TypeError: os.type は関数ではありません
XMLHttpRequest2 xml-http-request.ts:102
prepareRequest httpprovider.js:61
sendAsync httpprovider.js:116
node_modules opensea-js.js:24209</pre>
<p>このエラーを追跡すると、ユーザー エージェント文字列の構築に起因していることがわかります。 </p>
<p><code>rollup-plugin-polyfill-node</code> をインストールして <code>vite.config.js</code> に追加しようとしましたが、同じエラーが発生します: < ;/ p>
<pre class="brush:php;toolbar:false;">「パス」からパスをインポート
「@vitejs/plugin-vue」から vue をインポートします
「rollup-plugin-polyfill-node」からnodePolyfillsをインポートします
「vite」から {defineConfig} をインポートします
// https://vitejs.dev/config/
デフォルトのdefineConfigをエクスポート({
プラグイン: [vue()]、
解決する: {
エイリアス: {
'@': path.resolve(__dirname, 'src'),
}、
}、
サーバー: {
ポート: 8080、
}、
定義する: {
'プロセス.環境': {},
}、
建てる: {
ロールアップオプション: {
プラグイン: [
ノードポリフィル()、
]、
}、
}、
})</pre>
<p> また、<code>patch-package</code> を使用してファイルを手動で修復しようとしましたが、これにより <code>os</code> エラーが解決されましたが、リクエストを送信しようとしたときに失敗しました(ポリフィル<code>http</code>/<code>https</code>モジュール)。 </p>
私はこの問題を解決するために
リーリーrollup-plugin-polyfill-node
を使用しました。これは、ファビアーノの答えに基づいたより完全な解決策です:
リーリー私のプロジェクトでは、問題を解決するために次の構成を使用しました。解決策については、短い記事で説明します。
リーリー