在Visual Studio代码中运行babel-node
通常通过命令行启动,我可以input:
babel-node server.js
当我尝试设置这个断点,以及在Visual Studio代码中不工作时,我收到:
/Users/me/proj/node_modules/babel-cli/lib/babel-node.js --debug-brk=31893 --nolazy server.js /Users/me/proj/node_modules/babel-cli/lib/babel-node.js: line 1: /Applications: is a directory /Users/me/proj/node_modules/babel-cli/lib/babel-node.js: line 3: /Applications: is a directory /Users/me/proj/node_modules/babel-cli/lib/babel-node.js: line 4: Dockerfile: command not found /Users/me/proj/node_modules/babel-cli/lib/babel-node.js: line 5: syntax error near unexpected token `(' /Users/me/proj/node_modules/babel-cli/lib/babel-node.js: line 5: ` * when found, before invoking the "real" _babel-node(1) executable.'
我猜测它与可执行文件被从该目录调用,而不是从server.js文件相同的目录 – 但我真的不知道。
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "node", "request": "launch", "program": "${workspaceRoot}/server.js", "stopOnEntry": false, "args": [], "cwd": "${workspaceRoot}", "preLaunchTask": null, "runtimeExecutable": "${workspaceRoot}/node_modules/babel-cli/lib/babel-node.js", "runtimeArgs": [ "--nolazy" ], "env": { "NODE_ENV": "development" }, "externalConsole": false, "sourceMaps": false, "outDir": null }, { "name": "Attach", "type": "node", "request": "attach", "port": 5858, "address": "localhost", "restart": false, "sourceMaps": false, "outDir": null, "localRoot": "${workspaceRoot}", "remoteRoot": null } ] }
发生此错误的原因是, babel-node.js
文件不是babel-node
可执行文件,而是一个添加了节点标志的包装文件:
巴贝尔-的node.js
/* eslint indent: 0 */ /** * This tiny wrapper file checks for known node flags and appends them * when found, before invoking the "real" _babel-node(1) executable. */
为了解决这个问题, babel-node
二进制文件的位置应该被设置为runtimeExecutable
属性的值。 位置是:
"${workspaceRoot}/node_modules/.bin/babel-node"