如何在运行npm start时传入--inspect标志?
npm start加上--inspect调试标志的正确姿势 嗨,我来帮你解决这个问题~你试的两种方式里,npm start -- --inspect其实是正确的方向,但可能你的package.json里的start脚本写法或者参数传递的逻辑没搞对,导致没生效。
先搞懂npm脚本的参数传递逻辑
当你在npm start后面加--,后面跟着的参数是直接传递给start脚本对应的命令,而不是传给npm本身。这是npm脚本传递参数的标准方式。
举个最常见的例子,如果你的package.json里的start脚本是这样的:
{ "scripts": { "start": "node index.js" } }
那运行npm start -- --inspect就完全等价于手动执行node index.js --inspect,这时候node的调试模式应该就能正常启用了。
为什么npm --inspect start不管用?
这个命令的问题在于,你把--inspect传给了npm命令本身,但npm根本不认识这个标志啊!它只会把这个参数当成自己的命令选项,而不会传递给start脚本里的node进程,所以自然没效果。
特殊场景:如果start脚本用了nodemon之类的工具
如果你的start脚本是用nodemon或者其他进程管理工具启动的,那可能需要多一层参数传递。比如用nodemon的话,你可以先试试:
npm start -- --inspect
有些工具可能需要你再加一层--才能把参数传递给底层的node命令,比如:
npm start -- -- --inspect
不过这种情况比较少,你可以先直接测试底层命令(比如nodemon --inspect index.js),确认能正常启动调试,再调整npm的参数传递方式。
快速验证方法
你可以先跳过npm,直接运行start脚本对应的命令加上--inspect,比如如果start是node index.js,就跑node --inspect index.js,看看调试模式能不能正常启动。如果可以,那就是npm参数传递的问题;如果不行,那可能是你的项目配置本身有问题。
内容的提问来源于stack exchange,提问作者ericsoderstrom

