为什么在使用nodemon和ts-node时节点检查器无法启动?

时间:2018-03-01 04:51:31

标签: node.js typescript debugging nodemon ts-node

我有一个用typescript编写的简单节点服务器。我的package.json配置为:

view.clearAnimation()

当我运行"scripts": { "build": "tsc", "dev": "nodemon --watch src/**/* -e ts,json --exec ts-node ./src/server.ts", "debug": "nodemon --verbose --watch src/**/* -e ts,json --exec ts-node --inspect ./src/server.ts" }, 时,nodemon将启动服务器并在进行任何更改时重新启动它。

npm run dev

然而,当我运行[02/28/18 20:45:53] npm run dev > pq-api@1.0.0 dev C:\Users\joe\pq\pq-api > nodemon --watch src/**/* -e ts,json --exec ts-node ./src/server.ts [nodemon] 1.15.1 [nodemon] to restart at any time, enter `rs` [nodemon] watching: src/**/* [nodemon] starting `ts-node ./src/server.ts` initializing config to development info: PQ-API running on port 3000 时(所以我可以附加调试器)看起来它开始启动,但只是永远挂起

npm run debug

这就是输出的全部内容。该脚本永远不会执行;服务器永远不会启动,检查器永远无法连接。

节点8.94
nodemon 1.15.1
ts-node 5.0.0
typescript 2.7.2

5 个答案:

答案 0 :(得分:6)

使用ts-node 5.0.0,您不再以相同的方式传递--inspect flag。建议的方式是node --inspect -r ts-node/register path/to/ts。例如:

nodemon --watch src/**/* -e ts,json --exec node --inspect-brk -r ts-node/register src/app.ts

请参阅https://github.com/TypeStrong/ts-node/issues/537

答案 1 :(得分:0)

为inspect选项提供位置和端口,如:

--inspect=0.0.0.0:9200

答案 2 :(得分:0)

我使用上面的一些信息进行了更改,因为我的似乎不起作用,并且所做的更改确实解决了问题。

来自"start": "tsnd --inspect -- src/app.local.ts"
收件人:"start": "node --inspect -r ts-node/register src/app.local.ts"

答案 3 :(得分:0)

我刚刚通过编写 nodemon.json 文件解决了这个问题:

{
  "restartable": "rs",
  "ignore": [".git", "node_modules/**/node_modules"],
  "verbose": true,
  "execMap": { // [A]
    "ts": "node --require ts-node/register"
  },
  "watch": ["src/"],
  "env": {
    "NODE_ENV": "development"
  },
  "ext": "js,json,ts"
}

参考:https://dev.to/oieduardorabelo/nodejs-with-typescript-debug-inside-vscode-and-nodemon-23o7

答案 4 :(得分:-1)

我正在使用PHP Storm,@ user60456的先前答案对我来说就像一个魅力。

进行了一些更改,我还能够使用 dotenv 在PHP Storm中使用多个环境文件来运行调试模式。

package.json

"start:dev": "nodemon --watch src/**/* -e ts,json --exec node --inspect-brk -r ts-node/register -r dotenv/config local.ts dotenv_config_path=./.env.development",

其中 local.ts 是我的 app.listen()所在的文件。

然后,我必须使用以下命令创建一个新的 Run配置(附加到Node.js / Chrome)

  • 主机:本地主机
  • 端口:9229
  • 附加到:Chrome或Node.js> 6.3以--inspect开始

然后在本地文件的远程URL 标签中选择根文件夹,并将远程URL 设置为 / usr / src / app 。 / p>

enter image description here

现在,您可以运行npm run start:dev。您将看到控制台输出:

Debugger listening on ws://127.0.0.1:9229/...

您必须立即运行Nodej.js调试配置,然后等待,直到看到控制台输出:

Debugger attached.

enter image description here

应用程序现在正在调试模式下运行。