npm项目中无参数nodemon命令未读取package.json的main值问题
为什么直接运行
nodemon会启动index.js而非package.json指定的server.js? 以下是几个可能的原因及解决方向:
- package.json语法错误:虽然你贴的配置没问题,但实际文件如果存在语法错误(比如多余逗号、引号不闭合),nodemon会无法正确读取
main字段,只能 fallback 到默认的index.js。可以用npm validate命令验证package.json的有效性。 - nodemon配置被覆盖:如果项目里有
nodemon.json、.nodemonrc这类本地配置文件,或者你有全局的nodemon配置,可能里面指定了默认启动文件为index.js,覆盖了package.json的设置。可以检查这些配置文件,或者临时用nodemon --config ""命令启动,忽略自定义配置测试。 - 版本bug:你用的2.0.16版本可能存在读取
main字段的bug。试试升级nodemon到最新稳定版(npm install -g nodemon@latest),或者降级到2.0.15版本再看。 - 缓存干扰:nodemon可能缓存了旧的启动配置,没读取最新的package.json。可以删掉项目里的
node_modules/.cache文件夹,或者用nodemon --no-cache启动,跳过缓存。
另外,还有个稳妥的临时方案:在package.json里添加start脚本,这样nodemon会优先执行这个脚本:
{ "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.18.1" } }
之后直接运行nodemon就会启动server.js了。
内容的提问来源于stack exchange,提问作者JCollier
相关产品推荐
相关产品推荐

