首页 > 解决方案 > 在服务器上运行 next.js 项目的问题

问题描述

我目前正在尝试在 Linux 服务器上运行 next.js 的项目(简单测试项目)。该项目能够在本地运行没有问题,但是每次我运行npm run devnpm run build我得到以下错误:

node:events:368
      throw er; // Unhandled 'error' event
      ^

Error: spawn /nfs/encs/ArchDep/x86_64.EL7/pkg/node-v16.13.0/root/bin/node EAGAIN
    at Process.ChildProcess._handle.onexit (node:internal/child_process:282:19)
    at onErrorNT (node:internal/child_process:477:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (node:internal/child_process:288:12)
    at onErrorNT (node:internal/child_process:477:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -11,
  code: 'EAGAIN',
  syscall: 'spawn /nfs/encs/ArchDep/x86_64.EL7/pkg/node-v16.13.0/root/bin/node',
  path: '/nfs/encs/ArchDep/x86_64.EL7/pkg/node-v16.13.0/root/bin/node',
  spawnargs: [
    '/nfs/www/groups/h/hn_comp353_2/comp353/node_modules/jest-worker/build/workers/processChild.js'
  ]
}

关于如何解决这个问题的任何想法?

标签: node.jsnext.js

解决方案


我在你spawnargs看到它正在尝试执行jest,所以这个失败与你的 Jest 测试无法在你的 Linux 服务器上运行有关。这可能是由于 Jest 尝试生成的线程多于服务器上可用的资源造成的。这在资源有限的高度虚拟化环境中很常见。

您可以尝试使用--runInBandor运行 Jest--maxWorkers=2吗?如果您正在运行 Jest,npm则必须package.json像这样添加命令:

{
  "scripts": {
    "test": "jest --runInBand"
  }
}

一般来说,NodeJSError: spawn错误很难调试,并且可能由各种问题引起。还有另一个SO Q&A 有很多关于这个主题的资源,你可以参考。


推荐阅读