我有一个npm项目,文件夹结构如下:
project
├── node_modules
│ └── (node_modles folders)
├── server.js
├── index.js
├── index.html
├── package.json
└── package-lock.json
我的index.js
是我这个小Web应用程序的前端JavaScript代码,我的server.js
是后端。我使用nodemon(版本2.0.16)来运行我的server.js
文件,这是一个简单的Express应用程序:
const express = require('express');
const app = express();
app.listen(4000, () => {console.log('Listening on port 4000')})
为了运行我的服务器,我在我的终端上运行nodemon server.js
,我的Express应用程序正常运行。然而,Nodemon文档说:
如果你有一个包。你可以省略main . Json文件脚本完全,没有恶魔将读取包。Json作为主属性并使用该值作为app (ref).
我想如果我的package.json
文件是这样的
{
"main": "server.js",
"dependencies": {
"express": "^4.18.1"
}
}
那么我应该能够运行nodemon
而不是nodemon server.js
,一切都应该一样。然而,事实并非如此。当我简单地用这个设置运行nodemon
时,它显然试图运行我的index.js
文件,而不管我在package.json
文件中有什么"main"
。有人能解释一下为什么我不能在这种情况下不带参数地运行nodemon吗?
如果我删除index.js
,那么运行无参数的nodemon
命令将按预期工作。但是,如果在项目的根目录下有一个名为index.js
的文件,那么无论我在package.json
中为"main"
设置什么,该文件都将运行。
我不确定这是否按设计工作,或者它是否打算使用"main"像这样忽略值。我在文档中找不到关于优先级的提及。