终端节点与bable-node在终端崩溃,但服务器运行正常吗?

时间:2019-05-30 14:50:09

标签: nodemon babel-node

我正在尝试将nodemon与bable-node一起使用。我的package.json中有以下命令:

"open-graph-playground": "nodemon --exec babel-node src/graphql/mock-server.js",

这是JavaScript文件:

import fs from 'fs';
import open from 'open';
import { buildSchema } from 'graphql';
import express from 'express';
import graphqlHTTP from 'express-graphql';

import root from './root';

const schemaString = fs.readFileSync(`${__dirname}/schema.graphql`, 'utf8');
const app = express();
const schema = buildSchema(schemaString);

app.use(
  '/mock-graphql-playground',
  graphqlHTTP({
    schema,
    rootValue: root,
    graphiql: true,
  }),
);

app.listen(4001);

open('http://localhost:4001/mock-graphql-playground');

当我在终端中运行yarn open-graph-playground时,出现此错误:

yarn run v1.13.0
$ nodemon --exec babel-node src/graphql/mock-server.js
[nodemon] 1.18.10
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `babel-node src/graphql/mock-server.js`
2019-05-30 15:45 node[1683] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2019-05-30 15:45 node[1683] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
[nodemon] Internal watch failed: EMFILE: too many open files, watch
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

奇怪的是,即使终端中的进程已关闭,服务器仍在http://localhost:4001/mock-graphql-playground上运行

2 个答案:

答案 0 :(得分:0)

nodemon本身已达到max open file descriptors的资源限制。这会导致nodemon崩溃。

但是,nodemon分叉执行babel-node作为另一个过程。我怀疑nodemon崩溃时,babel-node进程仍在运行。您应该能够检查ps(或ps -f或其他任何东西)的输出,并查看它是否仍在运行。

答案 1 :(得分:0)

您可能已经达到操作系统允许的文件监视的软限制。但是服务器运行良好,因为文件监视不是服务器不可或缺的。更改源代码时,将使用文件监视来重新加载服务器。发生这种情况的原因有两个。

1。 Nodemon正在监视项目外部的文件

由于您的文件夹结构,nodemon可能会看着额外的文件,例如node_modules文件夹。使用--watch ./src

将nodemon指向正确的目录

2。您的项目包含的文件超出了监视限制

某些操作系统对一次可以观看多少个文件有限制。您的项目或环境可能需要观看的文件数量超出系统允许的数量。在Linux上直接更改

sysctl -n -w fs.inotify.max_user_watches=16384

More info & source