node.js - 子进程未在 PM2 下为 Node 生成/工作
问题描述
差不多就是这样: PM2下运行的Node APP无法运行子进程
但没有答案(并且 OP 的重启对我不起作用)
我有以下问题:
NodeJS / Express 应用程序在运行时工作正常,npm run dev
无需将其转换为后台进程
该应用程序在内部生成一个子进程,如下所示:
let exec = util.promisify(require("child_process").exec)
const ret = await exec(ps, encoding: "utf-8"})
注意:我尝试了同步版本,execSync
但同样的问题仍然存在,所以它似乎与 async/await 无关。
注意我本地 macOS 上的 2 PM2,完全相同的版本5.1.0
似乎可以正常工作。所以我认为这与 Digital Ocean VPS 服务器有关。会是什么呢?
只要它不作为 pm2 进程运行,这在我的本地机器和 Digital Ocean VPS 上都可以正常工作
sudo pm2 start myapp
没有错误消息,什么都没有 - 该应用程序运行良好并且可以执行其他所有操作,除了我需要执行exec
运行命令的部分。超级沮丧!
有人有想法么?
谢谢你
解决方案
我解决了这个问题。为了他人的利益回答我自己的问题。
问题是我在代码中使用创建路径process.env.PWD
- 这在我的本地主机中有效,并且在不作为 PM2 运行时也有效。
事实证明,当我们使用 PM2 分叉进程时,它不会选择导致操作和失败的 PWD(例如/root/myapp
) 。undefined
fs
exec
我添加PWD=/root/myapp
并.env
监控它,pm2 logs
一切正常。
推荐阅读
- webpack - 加载动态组件的问题:关键依赖:依赖的请求是一个表达式
- microsoft-graph-api - 将 Microsoft Graph 响应映射到 Java POJO - API 返回值与 MSGraph 模型枚举值不匹配
- r - 字符列聚合 grop by and paste
- mongodb - 使用 docker 的 MongoDB Compass
- c# - 使用语句排序时的预期排序行为是什么
- c - 锁之前/之后的代码总是串行执行?
- java - 如何重置偏移值以重新读取kafka主题
- c# - C# - 使用嵌套类来组织和访问大型类对象,其中子类可以访问父对象中的 DataTable
- python - Keras 展平:ValueError:尝试将值(无)转换为不支持的类型(
) 到张量 - android - 如何在 Kotlin 的 RecyclerView 中返回位置?