Реагировать с babel. У меня есть эта путаница с импортом и module.exports. Я предполагаю, что babel при преобразовании кода ES6 в ES5 преобразует импорт и экспорт в требуемый и module.exports соответственно.
Если я экспортирую функцию из одного модуля и импортирую функцию в другой модуль, код будет выполняться отлично. Но если я экспортирую функцию с помощью modules.exports и импортирую с помощью "import", ошибка выдается во время выполнения, говоря, что это не функция.
Я приготовил пример.
// 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");
Я использовал babel с предустановленным es2015, чтобы перекомпилировать его. Это дает мне следующую ошибку:
Uncaught TypeError: (0, _animals.Tiger) не является функцией
Но если я удалю module.exports = Tiger;
И заменим его на export { Tiger };
Он отлично работает.
Что мне здесь не хватает?
EDIT: Я использую browserify как модуль bundler.