В браузерах имена модулей должны иметь свои расширения (например, yellow.js
, а не yellow
), если они не указаны в карте модулей для вашей страницы; относительные ссылки на модули должны начинаться с ./
или ../
(чтобы отличать их от ссылок на модули, перечисленные в карте модулей).
Так что, если вы не используете карту модуля, это
import Yellow from "/src/yellow";
должно быть
import Yellow from "./yellow.js";
Это ./
, потому что index.js
и yellow.js
находятся в одном и том же месте, и относительный путь относится к модулю, выполняющему импорт (index.js
), а не к HTML, который импортировал этот модуль.
Re ошибка, которую вы получаете, когда вы используете type="module"
(что вы должны сделать):
Это приводит к этой ошибке:
Доступ к сценарию в 'file: /// D: /Game/src/index.js' из источника 'null' был заблокирован политикой CORS: Запросы перекрестного происхождения поддерживаются только для схем протоколов: http, data, хром, расширение хром, https.
Большинство браузеров не позволяют вам делать это с URL file://
, хотя Firefox делает. Однако даже при использовании Firefox лучше всего использовать локальный веб-сервер для веб-разработки, поскольку многие вещи либо заблокированы, либо ведут себя иначе, чем file://
URL-адреса против http://
и https://
URL-адресов. В вашей IDE может быть встроен один из них, или достаточно просто установить Apache или nginx локально, или вы можете свернуть свой собственный с Node.js и Express или Koa .