Как импортировать модули es6 с помощью babel-node? - PullRequest
0 голосов
/ 21 апреля 2019

У меня возникли проблемы с написанием быстрого теста для моего приложения экспресс-узла. Проблема в том, что в файле моего сервера я использую es6 import для импорта своего пользовательского класса. Итак, есть такая строка: import MyClass from 'src/myclass.js';

мой тестовый скрипт выглядит так:

npx babel-node srv/server.js

Я получаю следующую ошибку:

Syntax error: Unexpected identifier выделено имя модуля после импорта

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

Я уже пытался поместить --experimental-modules в тестовую команду, к сожалению, у меня это не сработало. Моя версия узла: 11.14

Моя точка входа такая

import MyClass form 'src/myclass.js';

var myClass = new MyClass();

мой файл класса такой

export default MyClass {
 constructor() {
  ...
 }
}

Моя конфигурация Babel

require('@babel/register')({
    only: [__dirname + '/src', __dirname + '/srv'],
    ignore: [__dirname + 'node_modules'],
    presets: ['@babel/preset-env']
});

var presets = [
    [
        '@babel/preset-env',
        {
            'useBuiltIns': 'entry',
            'corejs': 'core-js@3'
        }
    ]
];

var plugins = [
    [
        'module-resolver',
        {
            'root': ['./src'],
            'alias': {
                'lance': './node_modules/lance-gg/dist'
            }
        }
    ]
];

module.express = {
    presets,
    plugins
};

Поэтому я хотел бы иметь возможность запустить свой сервер узлов для тестирования своего кода без выполнения переноса кода (я сделаю это только в том случае, если мне понадобится производственная сборка моего приложения).
Я не мог понять, как именно я могу это сделать. Буду признателен за любую помощь или ссылку на какое-либо руководство.

1 Ответ

0 голосов
/ 22 апреля 2019

Привет, я не понимаю, почему, но переписываю свою конфигурацию babel следующим образом:

require('@babel/register')({
    only: [__dirname + '/src', __dirname + '/srv'],
    ignore: [__dirname + 'node_modules'],
    presets: ['@babel/preset-env']
});

var presets = [
    [
        '@babel/preset-env',
        {
            'useBuiltIns': 'entry',
            'corejs': 'core-js@3'
        }
    ]
];

var plugins = [
    [
        'module-resolver',
        {
            'root': ['./src'],
            'alias': {
                'lance': './node_modules/lance-gg/dist'
            }
        }
    ]
];

module.exports = function (api) {
    api.cache(false);

    return {
        presets,
        plugins
    };
};

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

...