Не удается найти модуль "babel-runtime / Регенератор". Импорт локально против импорта из NPM. - PullRequest
0 голосов
/ 17 января 2019

Я работаю над модулем NPM, и у меня были проблемы с моей конфигурацией babel. Я использую ES6, в частности с async / await, статическими методами классов и импортом / экспортом.

Сначала у меня появилась общая проблема: ReferenceError: regeneratorRuntime is not defined. Поэтому я установил babel-plugin-transform-runtime как зависимость dev и добавил ее в плагины в .babelrc. Когда в качестве зависимости требовался модуль с именем пути или через npm, я столкнулся с ошибкой Error: Cannot find module 'babel-runtime/regenerator'. Похоже, что для решения этой проблемы мне потребуется babel-runtime, однако многие люди рекомендуют не делать этого, когда вы публикуете модуль.

После поиска некоторых руководств я нашел один, в котором предлагалось не использовать импорт / экспорт, поэтому я попробовал это. После постройки и требования локально это работало. Однако при публикации в npm и импорте в качестве зависимости я продолжаю получать сообщение об ошибке: Error: Cannot find module 'babel-runtime/regenerator'.

  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-eslint": "^10.0.1",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "eslint": "^5.12.0",
    "eslint-config-prettier": "^3.4.0",
    "eslint-config-standard": "^12.0.0",
    "eslint-plugin-import": "^2.14.0",
    "eslint-plugin-node": "^8.0.1",
    "eslint-plugin-promise": "^4.0.1",
    "eslint-plugin-standard": "^4.0.0",
    "husky": "^1.3.1",
    "jest": "^23.6.0",
    "lint-staged": "^8.1.0",
    "nodemon": "^1.18.9",
    "prettier": "^1.15.3",
    "rimraf": "^2.6.3"
  },
{
  "presets": [
    "env"
  ],
  plugins: [
    "babel-plugin-transform-runtime"
  ]
}

Может кто-нибудь подсказать, как это исправить / дать совет по использованию babel при публикации модулей npm?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

В некотором роде это решение выключить и снова включить, но не задумывались ли вы только об использовании инструмента обновления вавилона для перехода к вавилонскому состоянию 7, а затем о добавлении чего-либо еще необходимого оттуда?

https://github.com/babel/babel-upgrade

Я скептически отнесся к тому, что впервые применил это, но до сих пор это работало, как сон, каждый раз, когда я сталкивался с одной из этих ошибок «not find module babel plugin».

0 голосов
/ 24 января 2019

В соответствии с документацией вам нужно два модуля:

  • Плагин преобразования babel-plugin-transform-runtime (который вы уже есть)

  • и фактический модуль времени выполнения, который заполняет или в противном случае включает функции во время выполнения (т. е. в браузере): babel-runtime

вы можете добавить его как (не dev) зависимость в package.json как

"babel-runtime": "^6.26.0"

, или просто сделайте

npm i babel-runtime --save

У других людей, похоже, такая же проблема с Вавилоном 6:

https://github.com/nozzle/react-static/issues/685

...