运行babel-node时,“TypeError:将循环结构转换为JSON”

时间:2017-12-22 07:03:51

标签: javascript babeljs

我有一个简单的快速服务器,我试图在Heroku上运行。一切都在本地工作正常,但当我部署到Heroku时,我收到以下错误。

/app/node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js:223
return _stringify.apply($JSON, args);
                       ^

TypeError: Converting circular structure to JSON
     at Object.stringify (native)
     at Object.stringify (/app/node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js:223:23)
     at stringify (/app/node_modules/babel-runtime/node_modules/core-js/library/fn/json/stringify.js:4:26)
     at compile (/app/node_modules/babel-cli/node_modules/babel-register/lib/node.js:105:42)
     at loader (/app/node_modules/babel-cli/node_modules/babel-register/lib/node.js:144:14)
     at Object.require.extensions.(anonymous function) [as .js] (/app/node_modules/babel-cli/node_modules/babel-register/lib/node.js:154:7)
     at Module.load (module.js:355:32)
     at Function.Module._load (module.js:310:12)
     at Function.Module.runMain (module.js:475:10)
     at Object.<anonymous> (/app/node_modules/babel-cli/lib/_babel-node.js:154:22)

在诊断时遇到很多麻烦。以下是我的package.json中的依赖项。

"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-stage-3": "^6.24.1",
"babel-runtime": "^6.26.0",

我的.babelrc文件:

    {
        "presets": ["react", "es2015", "stage-2", "stage-3"],
         "plugins": [
            ["transform-runtime", {
              "polyfill": false,
              "regenerator": true
            }]
          ],
          "ignore": ["node_modules"]
    }

1 个答案:

答案 0 :(得分:0)

我遇到了一种完全相同的情况,即在本地一切正常,但在生产环境中一切正常。经过一番挖掘之后,我意识到我的生产容器运行的脚本中包含NODE_ENV=production,这些脚本仅在我的package.json中安装dependencies而不安装devDependencies

因为我在devDependencies中指定了一些babel插件/预设,所以它们仅在本地可用,而在生产环境中不可用。这导致生产中出现“将循环结构转换为JSON”错误。

我将所有与babel相关的依赖项移至dependencies,问题已解决。