Nodemon不断重新启动服务器

pbgvytdp  于 2022-12-03  发布在  Node.js
关注(0)|答案(9)|浏览(404)

我有一个Express服务器,它使用本地json文件作为数据库,我使用https://github.com/typicode/lowdb作为getter和setter。
目前服务器不断启动和重启没有任何问题,但无法访问它。下面是我的Server.js文件:

import express from 'express'
import session from 'express-session'
import bodyParser from 'body-parser'
import promisify from 'es6-promisify'
import cors from 'cors'
import low from 'lowdb'
import fileAsync from 'lowdb/lib/storages/file-async'

import defaultdb from './models/Pages'

import routes from './routes/index.js'

const app = express();

const db = low('./core/db/index.json', { storage: fileAsync })

app.use(cors())

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use('/', routes);

app.set('port', process.env.PORT || 1337);

db.defaults(defaultdb).write().then(() => {
    const server = app.listen(app.get('port'), () => {
      console.log(`Express running → PORT ${server.address().port}`);
    });
});

以前有人遇到过这样的问题吗?我想和这句话有关:

db.defaults(defaultdb).write().then(() => {
    const server = app.listen(app.get('port'), () => {
      console.log(`Express running → PORT ${server.address().port}`);
    });
});
anauzrmj

anauzrmj1#

从文档中:
nodemon将监视nodemon启动目录中的文件,如果任何文件发生更改,nodemon将自动重新启动节点应用程序。
如果你的数据库的.JSON文件在nodemon的监视之下,而你一直在写它,你的服务器将在无限循环中重启,从而使它无法访问。尝试将你的.JSON文件移出nodemon的监视范围,方法是将它移出你的目录或通过一些nodemon配置(如果可能的话)。

dhxwm5r4

dhxwm5r42#

我从this page解决了这个问题。
实际上你只需要

nodemon --ignore 'logs/*'
nwo49xxi

nwo49xxi3#

我的解决方案:我已经在package.json文件中添加了nodemonConfig,以便停止无限循环/重新启动。在package.json中:

"nodemonConfig": { "ext": "js", "ignore": ["*.test.ts", "db/*"], "delay": "2" },
"scripts": { "start": "nodemon" }
s4chpxco

s4chpxco4#

我对不断的重启感到困惑。我从**nodemon --verbose**开始,看看是什么导致了重启。
这表明我的package.json文件是罪魁祸首。我在一个Dropbox文件夹中运行我的安装,刚刚从我的node_modules文件夹中删除了所有文件,并进行了全新安装。另一台共享我的Dropbox文件夹的电脑当时正在运行,我不知道,它正忙于更新其node_module文件,并在更新的同时更新package.json文件的Dropbox副本。
我的解决方案很简单,我休息了一会儿,等待Dropbox完成对node_modules文件夹的索引。当Dropbox完成同步后,nodemon运行起来,没有任何意外的重启。

oipij1gg

oipij1gg5#

在我的情况下(这是相同的OP),只是忽略数据库文件的工作

nodemon --ignore server/db.json server/server.js
yhived7q

yhived7q6#

您可以使用这个通用配置文件,将其命名为nodemon.json,并将其放在项目的根文件夹中。

{
  "restartable": "rs",
  "ignore": [".git", "node_modules/", "dist/", "coverage/"],
  "watch": ["src/"],
  "execMap": {
    "ts": "node -r ts-node/register"
  },
  "env": {
    "NODE_ENV": "development"
  },
  "ext": "js,json,ts"
}
nnsrf1az

nnsrf1az7#

我通过将以下代码添加到package.json文件中解决了这个问题

"nodemonConfig": {
    "ext": "js",
    "ignore": [
      "*.test.ts",
      "db/*"
    ],
    "delay": "2"
  }
}
55ooxyrt

55ooxyrt8#

在您的package.json“nodemonConfig”中添加以下内容:{“ext”:“js”,“忽略”:[“.测试.ts”,“db/”],“延迟”:“二”}

ax6ht2ek

ax6ht2ek9#

我通过在我的package.json中创建一个脚本来解决这个问题,如下所示:

scripts": {
    "start-continuous": "supervisor server/server.js",
},

如果在全局范围内安装了Supervisor,则此操作将有效。

npm install supervisor -g

现在我所做的就是:npm run start-continuous

相关问题