it-roy-ru.com

Поддержка модуля ES6 в Chrome 62/Chrome Canary 64, не работает локально, ошибка 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';
}

Ошибка: доступ к сценарию в 'file: /// C: *******/es6/code.js' из Origin 'null' был заблокирован политикой CORS: неверный ответ. Происхождение 'null', следовательно, не разрешено.

Chrome говорит, что он может поддерживать модули, и я видел примеры, работающие в Интернете, но когда я копирую их из загрузки и запускаю их локально, я всегда получаю сообщение об ошибке выше. Я не хочу использовать Babel, Webpack и т.д. 

Я попытался включить флаг функций Experimental Web Platform в Chrome и Chrome Canary.

20
mark pavlis

В отличие от обычных скриптов, модули ES6 подчиняются политика того же происхождения . Это означает, что вы не можете import их из файловой системы или перекрестного источника без заголовка CORS (который не может быть установлен для локальных файлов).

По сути, вам нужно запустить этот код с (локального) сервера или отключить в браузере тот же источник в браузере (не делайте это постоянно). Смотрите: Доступ к изображению из источника 'null' был заблокирован политикой CORS .

24
Alexander O'Mara

Я столкнулся с той же проблемой, пытаясь импортировать код es6 для запуска в HTML-файл в моем браузере, получая ошибки CORS в консоли браузера. Если у вас есть python на вашем компьютере, один из простых способов создать локальный сервер: 

python3 -m http.server 8001

Из папки, в которой вы работаете.

0
Sydney C.