在 node.js 应用中以调试模式 (VSCode) 使用可选链接 (ES2020) 时出现语法错误
Syntax error when using optional chaining (ES2020) in debug mode (VSCode) in node.js app
我收到“未捕获的语法错误:意外的标记”。如果我的代码包含可选链接 (?.),当我尝试在 VSCode (F5) 中以调试模式使用我的 Express 应用程序时出现消息。
当我将应用程序与正常工作的命令“npm start”一起使用时,我没有遇到这个问题。
我没有使用非常具体的配置(编译器、打火机...)构建项目的经验,这个是用 npm init 创建的。
您可以在下面看到我认为对解决问题有用的详细信息。需要帮助请叫我。
如果应用程序包含可选的链接语法,我是否可以调试该应用程序?我应该更新任何版本吗?我应该更改任何配置文件吗?
详情:
节点 v16.10.0
npm v7.24.0
package.json
"main": "server/server.js",
"scripts": {
"start": "nodemon -e js,json,html,yml,css server/server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
},
"license": "ISC",
"dependencies": {
"@marsaud/smb2": "^0.17.2",
"bcrypt": "^5.0.1",
"body-parser": "^1.19.0",
"compression": "^1.7.4",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"equals": "^1.0.5",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"moment": "^2.24.0",
"mongodb": "^3.6.5",
"mssql": "^7.2.1",
"nodemailer": "^6.4.10",
"nodemon": "^2.0.7",
"redoc": "^2.0.0-rc.24",
"swagger-jsdoc": "^4.0.0",
"tedious": "^14.0.0",
"underscore": "^1.9.1"
}
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Iniciar el programa",
"program": "${workspaceFolder}/backEnd/server/server.js"
}
],
}
您是否尝试切换到不同的节点版本?我使用节点 v14 没有问题,但我在其他网站上看到他们使用的是 v16 并且可选链接也有问题。
我遇到了同样的问题,将 npm 降级到版本 6.14.16 对我有用。我在搜索解决方案时 运行ning 的另一个解决方法是从 package.json 脚本命令中删除 nodemon并用 node
替换它们
"scripts": {
"start": "node js,json,html,yml,css server/server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
和运行宁
nodemon --exec npm run start
虽然不确定确切的问题是什么,但它似乎与 运行 在 package.json 文件中的脚本中使用 nodemon 命令有关。我可以通过 运行ning
来验证这一点
npm run start
上面提到的 package.json 变化非常好,但是一旦它被更改为 运行 和 nodemon,我 运行 陷入了可选链接的问题。
我终于找到了解决方案,我没有使用正确的调试器,所以主要是 Visual Studio 代码错误的配置设置问题。
我最近安装了一些其他调试器,所以我不得不再次设置 node.js 调试器。
我收到“未捕获的语法错误:意外的标记”。如果我的代码包含可选链接 (?.),当我尝试在 VSCode (F5) 中以调试模式使用我的 Express 应用程序时出现消息。 当我将应用程序与正常工作的命令“npm start”一起使用时,我没有遇到这个问题。 我没有使用非常具体的配置(编译器、打火机...)构建项目的经验,这个是用 npm init 创建的。
您可以在下面看到我认为对解决问题有用的详细信息。需要帮助请叫我。 如果应用程序包含可选的链接语法,我是否可以调试该应用程序?我应该更新任何版本吗?我应该更改任何配置文件吗?
详情:
节点 v16.10.0
npm v7.24.0
package.json
"main": "server/server.js",
"scripts": {
"start": "nodemon -e js,json,html,yml,css server/server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
},
"license": "ISC",
"dependencies": {
"@marsaud/smb2": "^0.17.2",
"bcrypt": "^5.0.1",
"body-parser": "^1.19.0",
"compression": "^1.7.4",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"equals": "^1.0.5",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"moment": "^2.24.0",
"mongodb": "^3.6.5",
"mssql": "^7.2.1",
"nodemailer": "^6.4.10",
"nodemon": "^2.0.7",
"redoc": "^2.0.0-rc.24",
"swagger-jsdoc": "^4.0.0",
"tedious": "^14.0.0",
"underscore": "^1.9.1"
}
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Iniciar el programa",
"program": "${workspaceFolder}/backEnd/server/server.js"
}
],
}
您是否尝试切换到不同的节点版本?我使用节点 v14 没有问题,但我在其他网站上看到他们使用的是 v16 并且可选链接也有问题。
我遇到了同样的问题,将 npm 降级到版本 6.14.16 对我有用。我在搜索解决方案时 运行ning 的另一个解决方法是从 package.json 脚本命令中删除 nodemon并用 node
替换它们"scripts": {
"start": "node js,json,html,yml,css server/server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
和运行宁
nodemon --exec npm run start
虽然不确定确切的问题是什么,但它似乎与 运行 在 package.json 文件中的脚本中使用 nodemon 命令有关。我可以通过 运行ning
来验证这一点npm run start
上面提到的 package.json 变化非常好,但是一旦它被更改为 运行 和 nodemon,我 运行 陷入了可选链接的问题。
我终于找到了解决方案,我没有使用正确的调试器,所以主要是 Visual Studio 代码错误的配置设置问题。 我最近安装了一些其他调试器,所以我不得不再次设置 node.js 调试器。