NodeJS ESM Неожиданный экспресс-идентификатор // Не уверен, что проблема исходит от узла - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу создать сервер в NodeJS, используя экспериментальные модули es6 с Express, но кажется, что то, что работало отлично в последние дни, перестало работать без видимой причины. И мой код в прошлые дни был намного сложнее, чем то, что я пытаюсь запустить прямо сейчас, так что это, вероятно, что-то глупое, что я забыл.

Когда я запускаю свой сервер, я получаю следующую ошибку, но не могу найти, что не так.

> node --experimental-modules src/app.js

(node:30824) ExperimentalWarning: The ESM module loader is experimental.
A:\projects\olympiades\t05\src\app.js:2
import express       from 'express';
       ^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:51:7)
    at createScript (vm.js:136:10)
    at Object.runInThisContext (vm.js:197:10)
    at Module._compile (module.js:613:28)
    at Object.Module._extensions..js (module.js:660:10)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:501:12)
    at Function.Module._load (module.js:493:3)
    at createDynamicModule (internal/loader/Translators.js:50:15)
    at setExecutor (internal/loader/CreateDynamicModule.js:49:23)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! t05@1.0.0 start: `node --experimental-modules src/app.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the t05@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

А мой src/app.js код так же прост:

'use strict';
import express from 'express';

const  app = express();

app.use('/', express.static(process.cwd() + '/views'));
app.set('view engine', 'ejs');


app.get('/', (req, res) => {
    res.render('index', {page: 'login'});
});

Я попытался выполнить поиск в Google, но единственные результаты, которые я получил, были import, который не был определен, и большинство из них добавили флаг --experimental-modules при запуске js, но это не мой случай, и это не import, который не определен но export.

Я тоже пытался без 'use strict';, но тот же результат

Я не понимаю, почему узел решил перестать работать.


Обновление 1

Я забыл включить информацию о своей версии, вот они:

  • NodeJS: v9.8.0
  • NPM: 5,8,0
  • экспресс: ^ 4.16.3
  • mongodb: ^ 3.0.7
  • ejs: ^ 2.5.9
  • body-parser: ^ 1.18.2
  • подчеркивание: ^ 1.9.0

Обновление 2

Я не могу добавлять другие модули, так как я делаю это, чтобы попрактиковаться в предстоящем событии, и это те модули, которые будут установлены во время события. Так что в других мирах я не могу использовать babel или машинопись.


Обновление 3

Я пытался открыть проект, который работал ранее, и похоже, что NodeJS глобально перестал работать. Я попытаюсь переустановить NodeJS.


Обновление 4

Даже после полной деинсталляции и переустановки NodeJS я все равно получаю ту же самую ошибку.
Что% $ # & @ происходит серьезно?

Какой следующий шаг сейчас? Должен ли я создать проблему на GitHub сейчас?

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Проверьте, что node_modules / и express существуют. Если они отсутствуют, это показывает это сообщение.

0 голосов
/ 29 апреля 2018

Я думаю, вам следует попробовать установить пакет babel-cli и попробовать babel-node src / app.js

...