npm 项目中的无参数 nodemon 命令不会从 package.json 运行 "main" 的值



我有一个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"像这样忽略值。我在文档中找不到关于优先级的提及。

最新更新