Reaguj z Babel. Mam to zamieszanie z importami i module.exports. Zakładam, że babel podczas konwersji kodu ES6 na ES5 konwertuje import i eksport odpowiednio na require i module.exports.Module.exports and es6 Import
Jeśli wyeksportuję funkcję z jednego modułu i zaimportuję funkcję do innego modułu, kod zostanie wykonany poprawnie. Ale jeśli wyeksportuję funkcję z module.exports i zaimportuję używając "importu", błąd zostanie zgłoszony w czasie wykonywania, mówiąc, że nie jest funkcją.
Przygotowałem przykład.
Użyłem babel z presetem es2015 do trans-kompilacji. To daje mi następujący błąd
Uncaught TypeError: (0 , _animals.Tiger) is not a function
Ale jeśli usunąć module.exports = Tiger;
I zastąpić go export { Tiger };
To działa dobrze.
Czego tu brakuje?
EDYTOWANIE: Używam browserify jako modułu bundler.
Czy spojrzałeś na wyjście Babel? Patrząc na transpiled źródło 'Tiger.js' powie Ci od razu, dlaczego to nie działa. Krótko mówiąc: trzymaj się jednego systemu modułów lub użyj modułu bundlerowego, takiego jak pakiet internetowy, który zajmie się niespójnościami. – GJK
Przykro mi to wspomnieć Używam browserify jako moduł bundler – Nani