Erreur de syntaxe d'importation et d'exportation du module ES2015
Sur l'utilisation de l'importation à l'exportation dans l'ES6, je suis d'erreur ci-dessous:
SyntaxError: déclarations d'exportation ne peut apparaître au plus haut niveau
J'ai surfé pour trouver comment résoudre ce problème, mais je suis incapable de. Quelqu'un peut-il expliquer à ce sujet. Im nouveau à l'ES6, en particulier à l'importation et à l'exportation. (J'ai été en utilisant StealJS complètement pour ce genre de choses)
Merci!
fichiers js sont:
app.js
import { cube, cubeRoot } from 'functions';
console.log(cube(4));
console.log(cubeRoot(125));
functions.js
//functions.js
function cube(a) {
return a * a * a;
}
function cubeRoot(a) {
return Math.cbrt(a);
}
export { cube, cubeRoot}
source d'informationauteur Vino
Vous devez vous connecter pour publier un commentaire.
Mise à jour de l'été 2017:
Voir http://caniuse.com/#search=modulesune nouvelle aide, peut-être besoin de modifier les paramètres.
Maintenant que les choses sont moins vague. Pour faire un module de travail que vous avez à indiquer au navigateur qu'il s'agit d'un module (l'autre étant le script). La première façon est implicite, un module importé est toujours un module. La deuxième façon est de type module
<script src="anymodule.js" type="module"></script>
Assurez-vous que d'importation et d'exportation sont seulement au plus haut niveaupas à l'intérieur d'un bloc, pas à l'intérieur d'une instruction if, pas à l'intérieur d'une boucle, etc.
Assurez-vous également de fournir le chemin d'accès complet (y compris .js), il doit commencer par
./
ou../
. Assumming les fichiers sont dans le même dossier, il seraitimport { cube, cubeRoot } from './functions.js';
eval
sur un module de chaîne ne fonctionnera pas.Obsolète réponse ci-dessous:
La ES2015 module d'importation et d'exportation de la syntaxe n'est pas pris en charge par n'importe quel navigateur à l'heure où j'écris cette réponse (04/2016). Le message d'erreur est manquer de pointe car il implique que la syntaxe est pris en charge, mais il n'est pas pris en charge. Voir la première note ici https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
La raison en est que la spécification de module de chargeurs est toujours un travail en cours. Voir https://whatwg.github.io/loader/#status
Ils sont des outils toutefois de polyfill ou à transpile cette syntaxe automatiquement comme babel .