Babel和Node-语法错误上无堆栈跟踪 [英] Babel and Node - No stack trace on syntax errors

查看:22
本文介绍了Babel和Node-语法错误上无堆栈跟踪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将一个项目从使用GULP转换到使用nodemon,这样我就可以使用带有巴别塔的ES6。我遵循了一个非常简单的过程,here描述得很好。快速浏览我的包。json:

{
  "main": "index.js",
  "scripts": {
    "start": "FORCE_COLOR=3 nodemon --exec babel-node index.js"
  },
  "dependencies": {
    "deps": "1.1.1"
  },
  "devDependencies": {
    "@babel/cli": "^7.16.0",
    "@babel/core": "^7.16.5",
    "@babel/node": "^7.16.5",
    "@babel/polyfill": "^7.12.1",
    "@babel/preset-env": "^7.16.5",
    "nodemon": "^2.0.15"
  },
  "babel": {
    "presets": [
      [
        "@babel/preset-env",
        {
          "targets": {
            "node": "current"
          }
        }
      ]
    ]
  }
}

当我运行npm start时,nodemon运行应用程序,并在保存时重新运行,但它崩溃并出现语法错误:

[nodemon] starting `babel-node index.js`
[HPM] Proxy created: /auth  -> http://localhost:8081/
/myproject/node_modules/@babel/core/lib/parser/index.js:93
    throw err;
    ^

SyntaxError: Legacy octal literals are not allowed in strict mode. (38:46)
    at Parser._raise (/myproject/node_modules/@babel/parser/src/parser/error.js:147:45)
    at Parser.raiseWithData (/myproject/node_modules/@babel/parser/src/parser/error.js:142:17)
    at Parser.raise (/myproject/node_modules/@babel/parser/src/parser/error.js:91:17)
    at Parser.recordStrictModeErrors (/myproject/node_modules/@babel/parser/src/tokenizer/index.js:1444:12)
    at Parser.readNumber (/myproject/node_modules/@babel/parser/src/tokenizer/index.js:1239:12)
    at Parser.getTokenFromCode (/myproject/node_modules/@babel/parser/src/tokenizer/index.js:951:14)
    at Parser.nextToken (/myproject/node_modules/@babel/parser/src/tokenizer/index.js:307:10)
    at Parser.next (/myproject/node_modules/@babel/parser/src/tokenizer/index.js:169:10) {
  loc: Position { line: 38, column: 46 },
  pos: 933,
  code: 'BABEL_PARSE_ERROR',
  reasonCode: 'StrictOctalLiteral'
}
[nodemon] app crashed - waiting for file changes before starting...

我的代码中发生此错误的位置似乎没有堆栈跟踪。在仔细理解no octal错误的情况下,我设法追踪到了它,但是出现的其他错误看起来非常相似,没有堆栈跟踪到我自己的代码中发生错误的位置。我怎么能那样调试呢?是否可以将Babel配置为包含代码中的错误来源?

推荐答案

使用Node16.9运行babel-node似乎可以修复此问题。

节点12至16.8:

SyntaxError: Legacy octal literals are not allowed in strict mode. (1:4)
    at Parser._raise (/tmp/babel-test-3/node_modules/@babel/parser/lib/index.js:569:17)

使用节点16.9+:

SyntaxError: /tmp/babel-test-3/index2.js: Legacy octal literals are not allowed in strict mode. (1:4)

> 1 | a = 01;
    |     ^
  2 |
    at Parser._raise (/tmp/babel-test-3/node_modules/@babel/parser/lib/index.js:569:17)

不需要其他更改。

Abug report has been filed

这篇关于Babel和Node-语法错误上无堆栈跟踪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆