web-dev-qa-db-fra.com

Prise en charge du module ES6 dans Chrome 62/Chrome Canary 64, ne fonctionne pas localement, erreur CORS

Index.html

<html>
    <head>
    <script type="module">
        import {answer} from './code.js'
        console.info("It's ${answer()} time!")
    </script>
    </head>
    <body>
    </body>
</html>

code.js

export function answer(){
    return 'module';
}

Erreur: l'accès au script dans 'fichier: /// C: *******/es6/code.js' à partir de l'origine 'null' a été bloqué par la stratégie CORS: réponse non valide. Origin 'null' n'est donc pas autorisé à accéder.

Chrome indique qu'il peut prendre en charge des modules et que j'ai vu des exemples fonctionner sur le Web, mais lorsque je les copie ou les télécharge et que je les exécute localement, j'obtiens toujours l'erreur ci-dessus. Je ne veux pas utiliser Babel, Webpack, etc. 

J'ai essayé d'activer l'indicateur de fonctionnalités de la plateforme Web expérimentale dans Chrome et Chrome Canary.

20
mark pavlis

Contrairement aux scripts classiques, les modules ES6 sont soumis à politique de même origine . Cela signifie que vous ne pouvez pas import depuis le système de fichiers ou cross-Origin sans en-tête CORS (qui ne peut pas être défini pour les fichiers locaux).

Fondamentalement, vous devez exécuter ce code à partir d'un serveur (local) ou désactiver same-Origin dans le navigateur pour le tester (ne le faites pas de manière permanente). Voir: L'accès à l'image d'origine "null" a été bloqué par la politique CORS .

24
Alexander O'Mara

J'ai rencontré le même problème en essayant d'importer du code es6 pour le lancer dans un fichier html dans mon navigateur, obtenant des erreurs CORS dans la console de mon navigateur. Si vous avez du python sur votre machine, un moyen simple de créer un serveur local consiste à: 

python3 -m http.server 8001

Dans le dossier dans lequel vous travaillez.

0
Sydney C.