23 votes

Pourquoi la mention "type : module" figure-t-elle dans le fichier package.json ?

J'ai mis à jour le nœud et construit le fichier existant.

Mais il n'a pas été construit, et il y avait une erreur.

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module:                          
      ~~/nuxt.config.js                                      
      require() of ES modules is not supported.                                            
      require() of ~~/nuxt.config.js from                    
      ~~/config.js is an ES   
      module file as it is a .js file whose nearest parent package.json contains "type":   
      "module" which defines all .js files in that package scope as ES modules.            
      Instead rename nuxt.config.js to end in .cjs, change the requiring code to use       
      import(), or remove "type": "module" from                                            
      ~~/package.json.  

J'ai donc supprimé 'type : module' dans le fichier package.json.

Est-ce que je peux l'enlever ?

39voto

afsharm Points 2726

Lorsque vous avez "type : module" dans le fichier package.json, votre code source doit utiliser les éléments suivants import syntaxe. Lorsque vous n'en avez pas, vous devez utiliser require la syntaxe.

Ajout de 'type': 'module' à la package.json permet d'utiliser les modules ES 6. Pour plus d'informations, voir aquí .

0voto

La réponse de @AfsharMohebi est excellente et couvre les points les plus utiles.

Cette réponse vise à ajouter un peu de couleur autour des pipelines CI/CD, où l'on peut avoir besoin d'utiliser l'ajout d'une dynamique type paramètre pour l'exécution de code avec node, écrit en ES6 JavaScript. En outre, je suis conscient que cela est tangentiel à la question de l'OP, mais Google m'a amené ici et donc j'espère que cela sera utile à quelqu'un d'autre.

En particulier, nous pouvons utiliser --input-type=module selon le documentation sur les nœuds si nous n'avons pas de package.json y compris type: module .

Par exemple, j'utilise la commande ci-dessous pour tester qu'un paquet npm a été téléchargé avec succès et est utilisable :

mkdir test-mypkg && cd test-mypkg 
echo "import { myFunc } from '@myname/myPkg';" > test.js 
npm i @myname/myPkg @babel/core @babel/node && cat test.js | node --input-type=module

Note : babel Les dépendances sont incluses pour une transpilation complète de ES6 à ES5 et peuvent/peuvent ne pas être nécessaires. De plus, vous devriez probablement épingler la version du paquet myPkg tu es en train de tester !

-1voto

Sam Points 956

Il y a beaucoup de problèmes qui ont été soulevés récemment - Je pense que node a sorti une mise à jour et a tué l'application. Roll back node à une version précédente - cela a résolu mon problème.

Voici où trouver les plus anciens : https://nodejs.org/en/download/releases/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X