2017-06-11 2 views
1

I installé beta chrome - Version 60.0.3112.24 (Const officiel) beta (64 bits)L'importation/exportation ES6 nécessite-t-elle l'extension ".js"?

en chrome: // flags/I activé 'Experimental Web Platform propose' (voir https://jakearchibald.com/2017/es-modules-in-browsers)

Je puis essayé:

<script type="module" src='bla/src/index.js'></script> 

où index.js a une ligne comme:

export { default as drawImage } from './drawImage'; 

Cette référence à un fichier existant drawImage.js

ce que je reçois dans la console est erreur dans

GET http://localhost/bla/src/drawImage 

Si je change l'exportation et ajouter l'extension « .js » il fonctionne très bien.

Est-ce un bug de chrome ou ES6 demande-t-il l'extension dans ce cas?

Aussi webpack le construit sans l'extension!

Répondre

2

L'extension fait partie du nom de fichier. Vous devez le mettre dans

Comme preuve, essayez ceci:.

  • fichier renommage à drawImage.test
  • modifier index.js pour contenir './drawImage.test'

Recharger et vous verrez le extendion js ou test est complètement arbirary, tant que vous l'indiquez dans le export.

De toute évidence, après le test revenir à l'extension correcte/meilleure js.

+0

thx! Je suis confus car il semble que l'importation n'a pas besoin d'une extension? aussi webpack fonctionne bien sans l'extension! – kofifus

+0

Je n'ai jamais essayé ces fonctionnalités expérimentales, mais dans node.js vous utilisez le mécanisme 'commonJS'. J'ai rencontré des problèmes similaires et la solution était d'éviter de laisser le chargeur * deviner * l'extension. En outre, si vous avez deux fichiers, les deux peuvent être viables, tels que 'data.js' et' data.json'. Je pense qu'il vaut mieux être explicite, mais c'est juste mon opinion. – pid

1

Non, les modules ne se soucient pas des extensions. Il doit juste être un nom qui résout en un fichier source.

Dans votre cas, http://localhost/bla/src/drawImage n'est pas un fichier alors que http://localhost/bla/src/drawImage.js l'est, donc c'est de là que vient l'erreur. Vous pouvez configurer votre serveur pour qu'il ignore l'extension, par exemple. Webpack fait de même.