Now.sh构建因以下原因而中断:当前未启用对实验语法'decorators-legacy'的支持

时间:2019-01-23 17:12:27

标签: javascript reactjs decorator babel next.js

预期:

在我的 tsconfig.js 中添加了decko(对装饰器的支持)并添加了对experimetalDecoractors的支持并在程序包中使用了@babel/plugin-proposal-decorators之后.json

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

结果:

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

enter image description here

  

当前未启用对实验语法“ 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文件中,但我的构建仍然中断。

enter image description here

3 个答案:

答案 0 :(得分:3)

Next.JS NX 用户请注意,目前在他们的 github 上有一个针对此错误的公开 (12/2020) issue:github.com/nrwl/nx/issues/3322

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

答案 1 :(得分:1)

弄清楚了,我需要将插件添加到配置的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
          }
        ]
      ]
    },

答案 2 :(得分:0)

我最终会看到类似的内容,但我认为您可以做到这一点:

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

似乎您可以为所有内容提供全局插件,而不是为每一个都设置全局插件。否则会打哈欠。