Si je comprends bien, si je crée un module ES6, je ne peux l'importer qu'à partir de code qui est lui-même un module. Cela signifie que le code non-module, c'est-à-dire Javascript intégré, ou la console d'outils de développement Chrome dev ne peut jamais accéder au code qui se trouve dans un module.
Est-ce vrai? Y a-t-il un moyen de contourner cela, car cela semble être une limitation assez extrême.
Vous pouvez utiliser importation dynamique dans la console de Chrome.
import('path/to/module.js').then(m => module = m)
// [doSomething] is an exported function from [module.js].
module.doSomething()
Vous pouvez enregistrer la fonction ou la variable dans l'espace de noms global avec une ligne comme window.myFunction = myFunction
ou window.myVariable = myVariable
. Vous pouvez le faire dans le module où myFunction
ou myVariable
sont déclarés ou le faire dans un module distinct où ils ont été importés.
Une fois cela fait, vous pourrez utiliser myFunction
et myVariable
à partir de la console Chrome DevTools.
Par exemple:
import myModule from '/path/to/module.js';
window.myModule = myModule;
// in the console:
myModule.foo();
(Nous remercions @Evert d'avoir fourni cette solution dans un commentaire, quoique d'une manière plutôt détournée qui m'a pris un certain temps à comprendre.)
Vous pouvez uniquement importer un module à partir d'autres modules, car import
est une fonctionnalité de modules.
Comment avez-vous "importé" avant les modules ES6? Vous ne l'avez pas fait, car cela n'existait pas. Vous pouvez réellement interagir avec un module E6 de la même manière que vous l'avez utilisé pour interagir entre deux scripts indépendants hors module.