Now.sh 构建中断的原因是:当前未启用对实验性语法“decorators-legacy”的支持

IT技术 javascript reactjs decorator babeljs next.js
2021-05-19 00:54:54

预期的:

添加decko(支持装饰器)以及experimetalDecoractors在我的tsconfig.js 中添加支持@babel/plugin-proposal-decoratorspackage.json 中使用之后

我的now.sh构建应该在创建 PR 后正常构建和部署,也是因为该应用程序在本地运行良好。

结果:

构建实际上因以下错误而中断:

在此处输入图片说明

当前未启用对实验性语法“decorators-legacy”的支持

公关: https : //github.com/Futuratum/moonholdings.io/pull/27

构建: https : //zeit.co/leongaban/moonholdings/9aacr3qhs


我实际上在本地遇到了同样的错误,但是我通过添加@babel/plugin-proposal-decorators包并更新我的 package.json 来修复它,如下所示:

"babel": {
    "env": {
      "development": {
        "presets": [
          "next/babel"
        ],
        "plugins": [
          [
            "styled-components",
            {
              "ssr": true,
              "displayName": true
            }
          ],
          [
            "@babel/plugin-proposal-decorators",
            {
              "legacy": true
            }
          ]
        ]
      },

我还尝试将 babel 配置移到 .bablerc 文件中,但我的构建仍然中断。

在此处输入图片说明

3个回答

Next.JS NX 用户注意,目前在他们的 github 上有一个关于这个错误的开放 (12/2020)问题:github.com/nrwl/nx/issues/3322

我尝试组合使用多种解决方案来解决此问题,但尚未成功。

刚刚想通了,我需要将插件添加到production我的配置部分,以便构建工作 X_x

{
  "env": {
    "development": {
      "presets": [
        "next/babel",
        "@zeit/next-typescript/babel"
      ],
      "plugins": [
        [
          "styled-components",
          {
            "ssr": true,
            "displayName": true
          }
        ],
        [
          "@babel/plugin-proposal-decorators",
          {
            "legacy": true
          }
        ]
      ]
    },
    "production": {
      "presets": [
        "next/babel",
        "@zeit/next-typescript/babel"
      ],
      "plugins": [
        [
          "styled-components",
          {
            "ssr": true,
            "displayName": true
          }
        ],
        [
          "@babel/plugin-proposal-decorators",
          {
            "legacy": true
          }
        ]
      ]
    },

我看到了类似的东西,但我认为你可以这样做:

{
  "presets": ["next/babel"],
  "plugins": [["@babel/plugin-proposal-decorators", { "legacy": true }]],
  "env": {...}
}

似乎你可以为所有东西都拥有全局插件,而不是为每一个都设置它。否则会打哈欠。