[求助] 请教一个关于 Nodejs 运行时崩溃 的问题

发布于 1周前 作者 h691938207 来自 nodejs/Nestjs

[求助] 请教一个关于 Nodejs 运行时崩溃 的问题

服务器迁移,重新部署生产环境,结果运行不了…

运行环境 Centos7

已经确认的

  1. 不是端口占用问题
  2. 不是 node.js 版本问题,和本地版本保持一致,也重装过一次
  3. 重新 npm install 也不行,尝试过的命令如下(顺序执行):
rm -rf node_modules
rm package-lock.json
npm cache clear --force
npm install

搜索引擎查了一晚上无果,只能来请教 V2EX 的各位了,谢谢各位。

error↓

[root[@akebono](/user/akebono) mapshare_server]# npm start

> [email protected] start /mapshare_server > nodemon --watch src -e ts,tsx --exec ts-node src/server.ts

[nodemon] 2.0.12 [nodemon] to restart at any time, enter rs [nodemon] watching path(s): src/**/* [nodemon] watching extensions: ts,tsx [nodemon] starting ts-node src/server.ts Error: Cannot find module ‘sha1’ Require stack:

  • /mapshare_server/src/controllers/share.ts
  • /mapshare_server/src/routes.ts
  • /mapshare_server/src/server.ts at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15) at Function.Module._load (internal/modules/cjs/loader.js:725:27) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) at Object.<anonymous> (/mapshare_server/src/controllers/share.ts:4:14) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Module.m._compile (/mapshare_server/node_modules/ts-node/src/index.ts:858:23) at Module._extensions…js (internal/modules/cjs/loader.js:1092:10) at Object.require.extensions.<computed> [as .ts] (/mapshare_server/node_modules/ts-node/src/index.ts:861:12) at Module.load (internal/modules/cjs/loader.js:928:32) [nodemon] app crashed - waiting for file changes before starting…

6 回复

lock 文件为什么要删除????


lock 文件不删试试

lock 文件不要删除。

看错误提示就是找不到 sha1 这个模块,是不是旧机器装到系统全局位置里去了,要不就搜代码哪个模块依赖了。或者碰运气 npm install sha1 试下。

lock 不能删的,删掉是为了干干净净的重装

如果 sha1 安装了,估计就是 /mapshare_server/src/controllers/share.ts ,/mapshare_server/src/routes.ts ,/mapshare_server/src/server.ts 这三个的引用路径的问题,检查一下每个 import 语句的路径是不是绝对路径,尝试改成相对路径。多问一句,本地和正式的启动命令一样吗?

关于Node.js运行时崩溃的问题,通常涉及多种可能的原因,包括内存泄漏、未捕获的异常、系统资源限制等。以下是一些常见的排查步骤和示例代码,帮助你定位和解决崩溃问题。

  1. 捕获未处理的异常: 确保你的Node.js应用能够捕获并处理未处理的异常,防止进程崩溃。

    process.on('uncaughtException', (err) => {
      console.error('Uncaught Exception:', err);
      process.exit(1); // 优雅地退出进程
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Unhandled Rejection at:', promise, 'reason:', reason);
      process.exit(1);
    });
    
  2. 内存泄漏检测: 使用工具如heapdumpChrome DevTools来分析内存使用情况,查找内存泄漏。

    npm install heapdump
    

    然后在代码中添加生成堆快照的逻辑。

  3. 监控和日志: 增强应用的日志记录,记录关键操作和错误,便于回溯问题。

  4. 资源限制: 检查系统的资源限制,如文件描述符数量、内存限制等,确保Node.js进程有足够的资源运行。

  5. 调试工具: 使用Node.js内置的调试工具或第三方工具如node-inspector,进行断点调试,查找崩溃点。

如果上述方法仍无法解决问题,建议提供崩溃时的错误日志和代码片段,以便进一步分析。

回到顶部