Utilisez vite/rollup.js pour étendre le module os de Node.js
P粉176151589
2023-08-24 16:17:55
<p>Je travaille sur un projet Vite qui utilise le package <code>opensea-js</code> Ce package dépend de <code>xhr2-cookies</code>, qui importe <code>os</code>, <code>http</code>, <code>https</code> modules de nœuds internes. </p>
<p>Lorsque j'essaie d'appeler une méthode opensea, j'obtiens l'erreur suivante : </p>
<pre class="brush:php;toolbar:false;">Uncaught (promis) TypeError : os.type n'est pas une fonction
XMLHttpRequest2 xml-http-request.ts:102
prepareRequest httpprovider.js:61
sendAsync httpprovider.js:116
node_modules opensea-js.js:24209</pre>
<p>Retracez cette erreur et découvrez qu'elle provient de la création de la chaîne de l'agent utilisateur. </p>
<p>J'ai essayé d'installer <code>rollup-plugin-polyfill-node</code> et de l'ajouter à <code>vite.config.js</code> mais j'obtiens toujours la même erreur : </ p>
<pre class="brush:php;toolbar:false;">importer le chemin à partir de 'path'
importer la vue depuis '@vitejs/plugin-vue'
importer des nodePolyfills depuis 'rollup-plugin-polyfill-node'
importer {defineConfig} depuis 'vite'
// https://vitejs.dev/config/
exporter la définition par défaut ({
plugins : [vue()],
résoudre: {
pseudo : {
'@' : chemin.resolve(__dirname, 'src'),
},
},
serveur : {
port : 8080,
},
définir: {
'processus.env' : {},
},
construire: {
Options de cumul : {
plugins : [
noeudPolyfills(),
],
},
},
})</pré>
<p>J'ai également essayé de réparer manuellement le fichier à l'aide de <code>patch-package</code> qui a résolu l'erreur <code>os</code> polyfill<code>http</code>/<code>https</code> </p>
J'ai utilisé
rollup-plugin-polyfill-node
pour résoudre ce problème.Voici une solution plus complète basée sur la réponse de Fabiano :
Dans mon projet, j'ai utilisé la configuration suivante pour résoudre le problème. Je décris la solution dans un court article.