когда modules: false устанавливается babel, то как nodejs может проанализировать инструкцию import es6 module?

#node.js #babeljs

#node.js #babeljs

Вопрос:

Насколько я знаю, nodejs может понимать только синтаксис require, а не оператор import / export .

Поэтому, когда я хочу использовать инструкцию модуля es6 в nodejs, я должен настроить babel и преобразовать эти инструкции модуля es6 в синтаксис require, чтобы nodejs мог понять, что делать.

https://github.com/kentcdodds/jest-cypress-react-babel-webpack/tree/tjs/jest-00 Но, видя это репозиторий, автор использует module:false с настройкой babel (см. Файл .babelrc)

Как я знаю, module:false опция предотвращает перенос инструкции модуля es6.

Nodejs по-прежнему не может понять инструкцию import / export, но как это работает без переноса ..? Любые советы будут оценены!

Комментарии:

1. » Насколько я знаю, nodejs может понимать только синтаксис require, а не инструкцию import / export». Я не думаю, что это должно выполняться в Node, но в браузере.

2. timonweb.com/javascript/how-to-enable-es6-imports-in-nodejs Согласно этой статье, а также многим другим, описывается, что nodejs не поддерживает оператор импорта / экспорта. Так запутался: (

3. Узел @koo поддерживает модули начиная с версии 12 (IIRC). Сначала это было за флагом, но начиная с 14 (ну, на самом деле, какая-то версия 13.X), теперь это должно быть просто обычным делом. Вам нужно установить "type": "module" в ближайшем package.json, чтобы включить поддержку модулей ES.

4. @VLAZ спасибо за вашу помощь. Но, как вы можете видеть в коде репозитория, который я связал, в ближайшем файле package.json файла .js нет type:module . Тем не менее, это работает, когда я запускаю сервер разработки.

5. @jwkoo опять же, он запускается в браузере , а не в узле. Вы запускаете сервер разработки, но на самом деле он не использует модульную систему. Он просто обслуживает ваши файлы, а сам браузер выполняет связывание модулей.