Javascript Nodemon一直在重新启动服务器

Javascript Nodemon一直在重新启动服务器,javascript,node.js,Javascript,Node.js,我有一个express服务器,它使用本地json文件作为数据库。我用的是接球手和二传手 目前服务器一直在启动和重新启动,没有任何问题,但无法访问它。下面是我的Server.js文件: import express from 'express' import session from 'express-session' import bodyParser from 'body-parser' import promisify from 'es6-promisify' import cors fro

我有一个express服务器,它使用本地json文件作为数据库。我用的是接球手和二传手

目前服务器一直在启动和重新启动,没有任何问题,但无法访问它。下面是我的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}`);
    });
});

从文件中:

nodemon将监视启动nodemon的目录中的文件,如果任何文件发生更改,nodemon将自动重新启动节点应用程序


如果您的db的.JSON文件在nodemon的监视下,并且您一直在向其写入,那么您的服务器将在无限循环中重新启动,从而使其无法访问。尝试通过将.JSON文件移到您的目录外或通过一些nodemon配置(如果可能)将其移到nodemon手表的范围外。

我对不断的重启感到困惑。我从nodemon--verbose开始查看是什么导致了重启

这表明我的package.json文件是罪魁祸首。我在Dropbbox文件夹中运行我的安装,刚刚从node_modules文件夹中删除了所有文件并重新安装。另一台共享我的Dropbox文件夹的计算机当时正在运行,我不知道,它正在忙着更新其node_模块文件并更新package.json文件的Dropbox副本

我的解决方案很简单,我休息一下,等待Dropbox完成对node_modules文件夹的索引。Dropbox完成同步后,nodemon在没有任何意外重启的情况下运行。

我从中解决了这个问题

实际上你只需要做

 nodemon --ignore 'logs/*'

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

"nodemonConfig": { "ext": "js", "ignore": ["*.test.ts", "db/*"], "delay": "2" },
"scripts": { "start": "nodemon" }
在我的例子中(与OP相同),忽略数据库文件是有效的

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

但我不是经常给db写信。仅在启动时写入默认数据库。是否我的语法错误导致了无限循环?在服务器启动时,您可能没有显式写入它,但在服务器启动时,lowdb可能正在写入.JSON文件或其他相关文件。@Dileet同样在查看代码后,这一行似乎正在执行写入
db.defaults(defaultdb).write()
。因为它在启动时就这样做了,所以您将遇到上面提到的无限循环。好的,所以删除它是可行的。但是我该如何设置默认的db呢?你的链接似乎已经断开了。虽然链接确实断开了,但我不是页面的所有者,尽管你可以尝试使用命令nodemon--ignore'logs/*,它可以工作。我使用
nodemon--ignore'sessions/*'index.js
,因为我的会话被写入同一目录中的文件。非常好。向package.json添加一次,然后忘记它!“是的,”马蒂斯说。非常感谢。