Как я могу запустить эту игру-змею на JavaScript в коде Visual Studio?

#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-адресе (или адресе веб-сайта (домена), если он у вас есть), чтобы все могли на нем играть?