J'ai installé le noeud 8.9.1 (le même problème se produit dans la version 10.5.0).
J'essaie d'utiliser des importations nommées depuis des packages npm dans un fichier avec le .mjs
import { throttle } from lodash;
Je cours:
node --experimental-modules index.mjs
et je reçois:
SyntaxError: le module demandé 'lodash' ne fournit pas une exportation nommée 'throttle' à ModuleJob._instantiate (internal/modules/esm/module_job.js: 80: 21)
--experimental-modules
sont supposés/ cesser d'être expérimentaux dans v10 LTS , alors pourquoi plus d'auteurs de modules n'ont-ils pas sauté dans le train?
--experimental-modules
ne prend pas encore en charge les exportations nommées:
--experimental-modules ne prend pas en charge l'importation d'exportations nommées depuis un module commonjs (à l'exception des propres fonctions intégrées au noeud).
C'est pourquoi vous ne pouvez pas utiliser la syntaxe:
import { throttle } from lodash;
Au lieu de cela (pour le moment au moins) vous devez faire:
import lodash from lodash;
const { throttle } = lodash;
Vraisemblablement, un jour, Node ajoutera un support pour toutes les fonctionnalités du module ES.
Vous devez utiliser l'extension .mjs
.
Une fois que cela est défini, les fichiers se terminant par .mjs pourront être chargés en tant que modules ES.
référence: https://nodejs.org/api/esm.html
Mettre à jour:
On dirait que vous n'avez pas encore exporté la méthode.
Supposons que j'ai hello.mjs
avec le contenu
export function sayHello() {
console.log('hello')
}
je peux l'utiliser dans index.mjs
comme ceci
import {sayHello} from './hello.mjs'
sayHello()