为啥我使用 nodemon 和 ts-node 时节点检查器不启动?

Posted

技术标签:

【中文标题】为啥我使用 nodemon 和 ts-node 时节点检查器不启动?【英文标题】:Why does the node inspector not start when I am using nodemon and ts-node?为什么我使用 nodemon 和 ts-node 时节点检查器不启动? 【发布时间】:2018-08-09 02:47:21 【问题描述】:

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

"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"
,

当我运行npm run dev 时,nodemon 将启动服务器并在进行任何更改时重新启动它。

[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(这样我可以附加调试器)时,它看起来像是开始启动,但只是永远挂起

[02/28/18 20:39:30]  npm run debug

> pq-api@1.0.0 debug C:\Users\joe\pq\pq-api
> nodemon  --verbose  --watch src/**/* -e ts,json --exec ts-node --inspect ./src/server.ts

[nodemon] 1.15.1
[nodemon] to restart at any time, enter `rs`
[nodemon] or send SIGHUP to 10156 to restart
[nodemon] watching: src/**/*
[nodemon] watching extensions: ts,json
[nodemon] starting `ts-node --inspect ./src/server.ts`
[nodemon] spawning
[nodemon] child pid: 13344
[nodemon] watching 12 files

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

节点 8.94nodemon 1.15.1ts-node 5.0.0typescript 2.7 .2

【问题讨论】:

尝试为inspect 提供一个端口,例如--inspect=0.0.0.0:9200 @FaizuddinMohammed 做到了。请留下答案,我会接受的! :) 在我的情况下,降级到版本 3.3.0 会有所帮助。但是我没有尝试 3.3.0 和 5.0.1 之间的任何东西,也许 3.3.0 不是最新的工作版本。 --inspect=0.0.0.0:9200 的安全含义:nodejs.org/en/docs/guides/debugging-getting-started/… 和 --inspect=9200 足以满足大多数情况。 【参考方案1】:

我刚刚通过编写这样的 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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

通过一些更改,我能够在 PHP Storm 中使用 dotenv 和多个 env 文件运行调试模式。

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() 所在的文件。

然后,我必须创建一个新的运行配置(附加到 Node.js/Chrome)

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

然后在Remote URLs of local files选项卡中选择根文件夹,并将Remote URL设置为/usr/src/app

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

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

您现在必须运行 Nodej.js 调试配置并等待,直到您看到控制台输出:

Debugger attached.

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

【讨论】:

【参考方案4】:

使用 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

【讨论】:

截至 2022 年 1 月,版本 10.4.0,文档仍然指向此方法。 “如果您需要使用高级 node.js CLI 参数(例如 --inspect),请将它们与 node -r ts-node/register 一起使用,而不是 ts-node 的 CLI。”来自npmjs.com/package/ts-node【参考方案5】:

为检查选项提供位置和端口,例如:

--inspect=0.0.0.0:9200

【讨论】:

安全隐患:nodejs.org/en/docs/guides/debugging-getting-started/…

以上是关于为啥我使用 nodemon 和 ts-node 时节点检查器不启动?的主要内容,如果未能解决你的问题,请参考以下文章

nodemon 无法在 exec 参数中找到 ts-node

Nodemon ts-node 无法监视 JavaScript 更改

如何在无需全局安装 ts-node 或 npx 的情况下完全运行 nodemon + ts-node + typescript?

如何使用 nodemon 查看多个文件夹?

为啥 nodemon 在终端中抛出一些错误?

为啥我在安装 Nodemon 时遇到错误?