Как запустить файл с импортированными модулями ES6 в Node - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть приложение реагирования, настроенное с помощью веб-пакета, и я хотел бы также иметь скрипт, который запускается в узле для записи материала в выходной файл, например:

script.m js

import fs from 'fs';
import {SomeClass} from './index.js';

const outputFile= fs.createWriteStream(__dirname + '/output.png');

// Writes into output file

и иметь следующую команду сценария в package.json:

"scripts": {
  ...
  "runFile": "node --experimental-modules test/script.mjs",
  ...
}

Всякий раз, когда я запускаю npm run runFile, он жалуется:

import {SomeClass} from './index.js';
        ^^^^^^^^^
SyntaxError: The requested module './index.js' does not provide an export named 'SomeClass'

даже если он существует в этом файле:

. / index. js

export SomeClass from './SomeClass';

Я даже использовал node -r esm test/script.js для запустить в узле, но он постоянно жалуется на ES6 exports. Может кто-нибудь указать мне, как запустить файл js, который имеет ES6 вещи с помощью команды node?

УЗЕЛ v10

1 Ответ

0 голосов
/ 06 февраля 2020

Существует небольшое несоответствие в ваших утверждениях экспорта / импорта.

О, и вы экспортируете из совершенно другого файла. Есть ли причина, по которой вам нужно это сделать?

Вы можете экспортировать объект, содержащий ваш класс

export { someClass 

Затем вы можете импортировать его с помощью существующего оператора импорта.

Подробнее прямой будет экспортировать из вашего ./someClass файла с экспортом по умолчанию

export default someClass

, а затем импортировать его без разрушения объекта:

import some class from './someClass';

Последний будет хорошо соответствовать имени файла и это стиль, ожидаемый большинством.

Обратите внимание, что при запуске старых версий узлов вам нужны дополнительные флаги CLI для запуска модулей. Для текущего узла (^ 13) достаточно установить type: module . См. Ответ Хао Ву.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...