Verwenden Sie vite/rollup.js, um das Betriebssystemmodul von Node.js zu erweitern
P粉176151589
2023-08-24 16:17:55
<p>Ich arbeite an einem Vite-Projekt, das das Paket <code>opensea-js</code> verwendet. Dieses Paket hängt von <code>xhr2-cookies</code> ab, das <code>os</code>, <code>http</code>, <code>https</code> importiert interne Knotenmodule. </p>
<p>Wenn ich versuche, eine Opensea-Methode aufzurufen, erhalte ich die folgende Fehlermeldung: </p>
<pre class="brush:php;toolbar:false;">Uncaught (in Versprechen) TypeError: os.type ist keine Funktion
XMLHttpRequest2 xml-http-request.ts:102
PrepareRequest httpprovider.js:61
sendAsync httpprovider.js:116
node_modules opensea-js.js:24209</pre>
<p>Verfolgen Sie diesen Fehler und stellen Sie fest, dass er vom Erstellen der Benutzeragentenzeichenfolge herrührt. </p>
<p>Ich habe versucht, <code>rollup-plugin-polyfill-node</code> zu installieren und es zu <code>vite.config.js</code> hinzuzufügen, aber ich erhalte immer noch die gleiche Fehlermeldung: </ p>
<pre class="brush:php;toolbar:false;">Pfad aus „Pfad“ importieren
vue aus „@vitejs/plugin-vue“ importieren
NodePolyfills aus „rollup-plugin-polyfill-node“ importieren
importiere { defineConfig } aus 'vite'
// https://vitejs.dev/config/
Standard exportieren defineConfig({
Plugins: [vue()],
lösen: {
alias: {
'@': path.resolve(__dirname, 'src'),
},
},
Server: {
Port: 8080,
},
definieren: {
'process.env': {},
},
bauen: {
rollupOptions: {
Plugins: [
nodePolyfills(),
],
},
},
})</pre>
<p>Ich habe auch versucht, die Datei manuell mit <code>patch-package</code> zu reparieren, was den <code>os</code>-Fehler behoben hat, aber beim Versuch, die Anfrage zu senden, ist es fehlgeschlagen polyfill<code>http</code>/<code>https</code> </p>
我使用了
rollup-plugin-polyfill-node
来解决这个问题。这是基于Fabiano的答案的更完整的解决方案:
在我的项目中,我使用了以下配置来解决问题。我在一篇简短的文章中描述了解决方案。