Le Module.les exportations et les es6 Importation
Réagir avec babel. J'ai cette confusion avec les importations et le module.les exportations. Je suppose babel lors de la conversion de l'ES6 code de ES5 convertit les importations et les exportations d'exiger et de module.les exportations respectivement.
Si j'exporte une fonction d'un module et de l'importation de la fonction dans un autre module, le code s'exécute bien. Mais si je l'exportation de la fonction avec le module.les exportations et les importer à l'aide de "l'importation" l'erreur est levée lors de l'exécution de dire c'est pas une fonction.
J'ai concocté un exemple.
//Tiger.js
function Tiger() {
function roar(terrian){
console.log('Hey i am in ' + terrian + ' and i am roaing');
};
return roar;
}
module.exports = Tiger;
//animal.js
import { Tiger } from './animals';
var animal = Tiger();
animal("jungle");
J'ai utilisé babel avec préréglage es2015 à transcompile. Cela me donne l'erreur suivante
Uncaught TypeError: (0 , _animals.Tiger) n'est pas une fonction
Mais si je supprime le module.exports = Tiger;
Et de le remplacer avec export { Tiger };
Il fonctionne très bien.
Ce qui me manque ici??
EDIT:
Je suis à l'aide de browserify que le module de bundler.
Tiger.js
vais vous dire tout de suite pourquoi il ne fonctionne pas. Longue histoire courte: le bâton avec un module de système ou de l'utilisation d'un module de bundler comme webpack qui prendra soin d'incohérences.Désolé de mentionner que je suis à l'aide de browserify que le module de bundler
OriginalL'auteur Nani | 2015-12-14
Vous devez vous connecter pour publier un commentaire.
export { Tiger }
serait équivalent àmodule.exports.Tiger = Tiger
. À l'inverse,module.exports = Tiger
serait équivalent àexport default Tiger
. Ainsi, lorsque vous utilisezmodule.exports = Tiger
et puis de tenterimport { Tiger } from './animals'
, vous êtes effectivement demanderTiger.Tiger
.import Tiger from './animals'
?Je crois donc, en supposant que vous ne voulez pas changer tiger.js
OriginalL'auteur Matt Molnar
Si vous souhaitez importer:
vous pouvez utiliser à la suite de la construction:
Ensuite, il sera.
Une autre option est de changer l'exportation tel que décrit par @Matt Molnar, mais c'est possible seulement si vous êtes l'auteur de la importées de code.
import * as Tiger from './animals'
travail pour moi ! MerciOriginalL'auteur jmarceli