ctrl+c 上的 npm 错误 ELIFECYCLE

Posted

技术标签:

【中文标题】ctrl+c 上的 npm 错误 ELIFECYCLE【英文标题】:npm error ELIFECYCLE on ctrl+c 【发布时间】:2018-03-30 12:37:32 【问题描述】:

我已经使用 heroku 启动了一个新的 socket.io 项目。服务器在 Windows 上本地运行良好。我用 npm start 启动它,但是当我用 ctrl + c 关闭它时,我在控制台中收到此错误:

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\
node_modules\\npm\\bin\\npm-cli.js" "start"
npm ERR! node v6.11.4
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! test1@1.0.0 start: `node index.js`
npm ERR! Exit status 3221225786
npm ERR!
npm ERR! Failed at the test1@1.0.0 start script 'node index.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the test1 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node index.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs test1
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls test1
npm ERR! There is likely additional logging output above.

我一直在寻找解决方案,但我能找到的很少有解决方案。我尝试过更新 npm 和节点,再次运行 npm install,清除 npm 缓存以及其他一些我想不起来的操作。

这是我的 index.js

const express = require('express');
const socketIO = require('socket.io');
const path = require('path');

const PORT = process.env.PORT || 3000;

const server = express()
  .use(express.static(__dirname + '/client'))
  .listen(PORT, () => console.log(`Listening on $ PORT `));

const io = socketIO(server);

const pg = require('pg');
var connectionString = "postgres://jdirjtnfueksiw:823e80fbae9599f0d6797f82342d83bccf1caea764b8a1659356f3ee89r69f94@ec1-78-222-138-451.compute-1.amazonaws.com:5432/jf84jd75jgu26d5?ssl=true";

pg.connect(connectionString, function(err, client, done) 
    if (err) 
        throw err;
    
    else 
        console.log('Database connection test successful');
    
);

io.on('connection', function (socket) 
        socket.emit('connected');

        console.log('New connection from ' + socket.request.connection.remoteAddress);

        socket.on('disconnect', function () 
            console.log('Player left');
        );
    );

我的 package.json


  "name": "test1",
  "version": "1.0.0",
  "engines": 
    "node": "6.11.4"
  ,
  "main": "index.js",
  "scripts": 
    "start": "node index.js"
  ,
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": 
    "pg": "6.x",
    "express": "4.13.4",
    "socket.io": "1.4.6"
  ,
  "devDependencies": ,
  "description": ""

感谢您的帮助。

【问题讨论】:

我也看到了同样的情况。不会每次都发生。我没有使用socket.io,但我使用的是express。我不认为这是一个大问题,但似乎有一些我们(表达?)没有正确处理的信号。 让我们看看赏金是否可以帮助找到这个问题的答案 【参考方案1】:

index.js 中可以尝试输入以下代码:

process.on('SIGINT', () => 
    process.exit();
);

我认为问题在于 Ctrl+C 杀死了应用程序,但仍有一些进程在后台运行。这将确保它被终止。

希望这会有所帮助!

【讨论】:

试一试....如果成功,将奖励你! 深入研究,但人们建议只调用process.exit() 实际上并不能正常关闭 Express... 似乎有一些关于此的 Express 文档:expressjs.com/en/advanced/healthcheck-graceful-shutdown.html

以上是关于ctrl+c 上的 npm 错误 ELIFECYCLE的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10 上的 Git Bash 忽略 Ctrl + C

ubuntu 上的 npm 致命错误,知道吗?

发布到 Nexus 上的私有 NPM 存储库时的身份验证错误

NPM 启动错误上的 ENOENT。为啥我会收到此错误,为啥要查找“我的图片”目录?

Mac上的Cordova安装问题

vagrant/homestead/windows 上的 npm 安装错误:EPROTO:协议错误,符号链接