#javascript #html #game-development
Вопрос:
У меня есть эта игра-змея, написанная на JavaScript, и когда я иду запускать game.js файл, нажав на значок запуска в правой верхней части экрана, я получаю эту ошибку.
[Running] node "/Users/matthewrowlinson/Documents/Javascript Code/snake/game.js"
(node:79394) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/matthewrowlinson/Documents/Javascript Code/snake/game.js:1
import { update as updateSnake, draw as drawSnake, SNAKE_SPEED, getSnakeHead, snakeIntersection } from './snake.js'
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1001:16)
at Module._compile (internal/modules/cjs/loader.js:1049:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
at internal/main/run_main_module.js:17:47
[Done] exited with code=1 in 0.065 seconds
Что забавно, потому что я не должен получать эту ошибку, потому что я специально установил тип=»модуль» в html-файле.
<script src="game.js" defer type="module"></script>
До сих пор это единственный способ, который я видел в качестве ответа на эту ошибку, установив тип «модуль», и я не знаю, почему он ничего не делает, и я все еще получаю ту же ошибку.
Комментарии:
1. Вы запускаете код в узле, а не в браузере. Вместо этого запустите его в браузере.
2. Если вы действительно хотите написать это для node, проще всего изменить расширение файла на
.mjs
Ответ №1:
Мне придется предположить, что вы пытаетесь разместить сценарий узла, и «game.js» скрипт включен в html-файл через <script src="game.js" defer type="module"></script>
.
опция «импорт» работает только для сценария узла на стороне сервера. Я предполагаю, что при подключении к серверу вы хотите game.js и html-файл, который появится в вашем браузере. Это означает, что game.js будет выполняться на стороне клиента, где у вас не может быть «модулей узлов» или «импорта».
Чтобы включить js-скрипт в html, вам не нужно указывать «тип отсрочки» или что-либо из содержимого модуля.
TL:DR
вы можете просто сделать <script src="game.js"
>
или
если вам не нужно размещать сервер, сделайте это <script src="game.js"></script>
Я не могу сделать действительно правильное суждение, потому что мне нужно многое предположить. Есть ли еще какая-нибудь информация?
Комментарии:
1. Значит, мне нужно запустить программу с узлом?
2. вы хотите просто открыть его в браузере или разместить на ip-адресе (или адресе веб-сайта (домена), если он у вас есть), чтобы все могли на нем играть?