【问题标题】:I am having an issue with babel building angular app for production我在使用 babel 为生产构建 Angular 应用程序时遇到问题
【发布时间】:2020-04-15 21:08:31
【问题描述】:

当前行为 我正在 circleci 上构建我的 Angular 项目,但它一直失败并显示以下消息:

发生未处理的异常:找不到模块 '@babel/compat-data/corejs3-shipped-proposals'

需要堆栈:

/home/circleci/eleven-app/frontend/node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env/lib/polyfills/corejs3/usage-plugin.js
/home/circleci/eleven-app/frontend/node_modules/@angular-devkit/build-angular/node_modules/@babel/preset-env/lib/index.js
/home/circleci/eleven-app/frontend/node_modules/@angular-devkit/build-angular/node_modules/@babel/core/lib/config/files/plugins.js
/home/circleci/eleven-app/frontend/node_modules/@angular-devkit/build-angular/node_modules/@babel/core/lib/config/files/index.js
/home/circleci/eleven-app/frontend/node_modules/@angular-devkit/build-angular/node_modules/@babel/core/lib/index.js
/home/circleci/eleven-app/frontend/node_modules/@angular-devkit/build-angular/src/utils/process-bundle.js
/home/circleci/eleven-app/frontend/node_modules/jest-worker/build/workers/processChild.js

我正在使用

{
  "@babel/plugin-proposal-numeric-separator": "^7.8.3",
  "core-js": "3.2.1",
  "tslib": "^1.11.1",
  "@babel/compat-data": "~7.8.0",
  "@babel/runtime-corejs3": "^7.9.2",
  "ts-node": "7.0.0",
  "tslint": "5.11.0",
  "typescript": "3.5.3",
}
resolutions: {
  "@babel/preset-env": "^7.8.7"
}

这里是 npx nls 为什么@babel/preset-env 输出:

eleven-app-frontend > @angular-devkit/build-angular > @babel/preset-env@7.8.7
eleven-app-frontend > @nrwl/angular > @nrwl/cypress > @cypress/webpack-preprocessor > @babel/preset-env@7.9.5
eleven-app-frontend > @nrwl/cypress > @cypress/webpack-preprocessor > @babel/preset-env@7.9.5

感谢您的阅读。

【问题讨论】:

    标签: babeljs


    【解决方案1】:

    今天遇到了同样的问题,所以我假设最新版本有一些奇怪的地方。

    我的 package.json 有以下内容:

    "@babel/compat-data": "~7.9.0"
    

    我删除了 ~ 以强制 7.9.0 而不是允许更新的,它对我有用。

    可能有一个更新的版本可以使用,但由于您为他们打开了一个问题 (https://github.com/babel/babel/issues/11427),我将等待更多详细信息。

    【讨论】:

    • 我正在研究同样的问题,这很奇怪,因为该库和 @babel/runtime-corejs3 几周内都没有发布
    • @FaridGarciayala 在我的情况下,我必须声明并使用 7.9.0 来解决问题
    • @FaridGarciayala 它应该可以工作(7.8/7.9)但尝试删除“node_modules”之前
    • 今天同样的问题。问题仅在构建服务器中,而不是在本地全新安装中...
    【解决方案2】:

    在将 TravisCI 和 Vue 与 Jest 和 Babel 一起使用时,我遇到了同样的问题。我的测试服一直失败。在我的 package.json 文件中将 "@babel/compat-data": "7.9.0" 添加到 devDependencies 解决了我的问题。

    【讨论】:

    • 谢谢。这帮助我修复了我在 CI 上失败的测试套件。
    【解决方案3】:

    到目前为止,我们提出了这 3 个选项:

    • 将 babel/preset-env 的依赖适配到 v7.9.0:"@babel/preset-env": "=7.9.0"
    • 如果您使用 NodeJS Docker 映像,请将版本修复为 13.13 以下,即:node:13.12.0-alpine
    • "@babel/compat-data": "7.9.0" 添加或升级到devDependencies

    这些解决方案是暂时的,应该在节点图像或 babel/preset-env 库得到实际修复后立即删除。

    链接的 Github 问题:

    巴别塔-https://github.com/babel/babel/issues/11427

    nodejs - https://github.com/nodejs/node/issues/32852#issuecomment-613652057

    【讨论】:

      【解决方案4】:

      同样的问题。 通过遵循上述建议 + 删除 node_modules 解决了它(请参阅this github 线程):

      • 明确添加 @babel/compat-data": "7.9.0" 到 devDependencies
      • 升级节点(在我的例子中是 13.3 到 14.0)
      • 必须删除我的 node_modules 文件夹并重新运行 yarn(或 npm)

      【讨论】:

        【解决方案5】:

        我今天在 Vue FE 项目的 Github Actions 构建中遇到了同样的问题。它在本地构建良好。我将尝试上面的解决方案,我会报告回来......

        更新:查看包锁定文件后,我的解决方案是显式添加“@babel/compat-data”到产品依赖项。以前它只是一些开发依赖项的依赖项。所以我的 package.json 现在看起来像:

        "dependencies": {
          "@babel/compat-data": "^7.8.6",
          ...
        

        【讨论】:

          【解决方案6】:

          如果您使用的是yarn,请尝试在您的项目中删除yarn.lock 文件。然后运行yarn install重新安装;你会得到一个新的yarn.lock 文件,这很好。

          它在我的 Next.js 项目中对我有用。

          【讨论】:

          • 谢谢,现在我安装的版本@babel/compat-data 是7.12.7,另外yarn.lock文件改了很多,
          猜你喜欢
          • 2020-05-27
          • 1970-01-01
          • 2020-05-07
          • 1970-01-01
          • 2020-04-18
          • 1970-01-01
          • 2019-10-30
          • 1970-01-01
          • 2022-10-16
          相关资源
          最近更新 更多