Какой самый простой способ использовать операторы ES6 / Import и т. Д. В Node v 10? - PullRequest
0 голосов
/ 23 мая 2018

Я довольно новичок в nodejs.С развитием nodejs (я только что установил v.10), каков текущий самый простой способ использовать функции ES6 (операторы импорта и т. Д.) В новом проекте nodejs - это «просто работает».Я хочу наименьшего количества зависимостей и метод с самым быстрым путем к «просто работает».

Я нахожу посты в сети немного запутанными.

  • Babel был установлен ранее для такого рода вещей, которые, как я понимаю,
  • Узел 10 Говорит ( Здесь ) разрешить использование узла --experimental-modules my-app.mjs
  • Этот пост кажется довольно авторитетным, но я думаю, что речь идет о создании пакетов, а не о синтаксисе.

Пожалуйста, помогите!Кажется, я получаю следующие ошибки для:

import {MagentoAccountApi} from 'js-magento-client';

Ошибка 1:

SyntaxError: Unexpected token {
    at new Script (vm.js:74:7)
    at createScript (vm.js:246:10)
    at Object.runInThisContext (vm.js:298:10)
    at Module._compile (internal/modules/cjs/loader.js:646:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10)
    at Module.load (internal/modules/cjs/loader.js:589:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
    at Function.Module._load (internal/modules/cjs/loader.js:520:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:719:10)
    at startup (internal/bootstrap/node.js:228:19)

Если я пытаюсь переименовать файл с расширением .mjs и загрузить с помощью: node --experimental-modules. \ mtest.mjs, тогда я получаю эту ошибку:

(node:20224) ExperimentalWarning: The ESM module loader is experimental.
file:///F:/node/magento-test/mtest.mjs:1
import {MagentoAccountApi} from 'js-magento-client';
        ^^^^^^^^^^^^^^^^^
SyntaxError: The requested module 'js-magento-client' does not provide an export named 'MagentoAccountApi'
    at ModuleJob._instantiate (internal/modules/esm/module_job.js:89:21)

Я не знаю, является ли это ошибкой пакета или ошибкой установки.

Может быть, Вавилон все еще правильный / самый простой способ сделать эту работу ..?Думаю, я не хочу начинать использовать что-то, что скоро будет устаревшим.

1 Ответ

0 голосов
/ 23 мая 2018

В настоящее время с помощью экспериментального загрузчика совместимость CommonJS допускает только экспорт по умолчанию .Вы не можете использовать именованные экспорты с существующими модулями CommonJS, поэтому в настоящее время вы должны сделать это:

import Magneto from "js-magento-client";
const { MagentoAccountApi } = Magneto;

Что не правильно, но, по-видимому, находится в процессе исправления.

Из документов NodeJS v10 :

При загрузке через import эти модули обеспечат единый экспорт default, представляющий значение module.exports на момент завершения оценки.

import fs from 'fs';
fs.readFile('./foo.txt', (err, body) => {
    if (err) {
        console.error(err);
    } else {
        console.log(body);
    }
});

Все комментарии выше, говорящие вам, что начинать с экспериментальной функции - плохая идея, на 100% относятся к делу.Выше приведен хороший пример.В какой-то момент это изменится, и вам придется изменить свой код.Если бы вы использовали Babel, у вас не было бы этой проблемы.

...