Babel-регистрация работает в пакете, но не когда требуется пакет - PullRequest
0 голосов
/ 08 июня 2018

Я установил babel-register в своем пакете (установленный "babel-preset-env": "1.7.0", "babel-register": "6.26.0")

index.js

require('babel-register');

// Contains a bunch of `import * ` stuff.
const lib = require('./lib.js');

.babelrc

    {
    "presets": [
        "env"
    ]
}

Это прекрасно работает локально, но когда я публикую свой пакет и пытаюсь его использовать, я все равно получаю:

SyntaxError: Unexpected token import
    at new Script (vm.js:51:7)
    at createScript (vm.js:136:10)
    at Object.runInThisContext (vm.js:197:10)
    at Module._compile (internal/modules/cjs/loader.js:618:28)

1 Ответ

0 голосов
/ 08 июня 2018

babel-register - это глобальный одноэлементный модуль, что означает, что одновременно может использоваться только один его экземпляр.Учитывая это, ожидается, что только разрабатываемое приложение верхнего уровня будет использовать его.Чтобы соответствовать этим целям, babel-register автоматически игнорирует все файлы внутри node_modules, поскольку предполагается, что node_modules будет уже скомпилирован для работы над версией узла пользователя до ее публикации.

Причинаваша логика не работает, когда установлено, из-за автоматического исключения node_modules, так как ваш модуль установлен в node_modules.

Даже если это не так, ваше использование здесь также сталкивается с проблемами из-заглобальное одиночное поведение, о котором я упоминал выше.Если вы загрузите babel-register здесь, он автоматически попытается скомпилировать код пользователя, использующего вашу библиотеку, в который он не запрашивал, не ожидает и может завершиться ошибкой.

Вы должны скомпилировать код своей библиотеки перед публикацией.

...