请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用PM2 启动时报错Error: connect ETIMEDOUT

在我使用npm run pm2 启动项目后 pm2的提示已经启动,下面是我的node脚本

"pm2":"cross-env NODE_ENV=pro pm2 start ./bin/www --watch"

命令执行完后项目启动:

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬─────── ───┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼─────── ───┼──────────┤
│ 0   │ www    │ default     │ 0.0.0   │ fork    │ 2876     │ 87s    │ 0    │ online    │ 0%       │ 29.6mb   │ fhtd2020 │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴─────── ───┴──────────┘

当我在前端发起请求的时候,请求被挂起,并且pm2日志中报错:

Error: connect ETIMEDOUT
    at Connection._handleConnectTimeout (C:\Server\tdzq_server\node_modules\mysql\lib\Connection.js:409:13)
    at Object.onceWrapper (events.js:421:28)
    at Socket.emit (events.js:315:20)
    at Socket._onTimeout (net.js:482:8)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7)
    --------------------
    at Protocol._enqueue (C:\Server\tdzq_server\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Protocol.handshake (C:\Server\tdzq_server\node_modules\mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (C:\Server\tdzq_server\node_modules\mysql\lib\Connection.js:116:18)
    at execute (C:\Server\tdzq_server\db\mysql.js:13:11)
    at verifyUser (C:\Server\tdzq_server\controller\setting_system.js:7:12)
    at C:\Server\tdzq_server\routes\index.js:19:27
    at Layer.handle [as handle_request] (C:\Server\tdzq_server\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Server\tdzq_server\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Server\tdzq_server\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Server\tdzq_server\node_modules\express\lib\router\layer.js:95:5) {
  errorno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  syscall: 'connect',
  fatal: true
}

这是我项目数据库的配置:

const env = process.env.NODE_ENV; 

let MYSQL_CONF = {}; 

if (env === 'dev') {
    MYSQL_CONF = {
        host: '127.0.0.1',
        user: 'root',
        password: '@1q2w3e4r!',
        port: '8886',
        database: 'tdzq_server'
    };
};

if (env === 'pro') {
    MYSQL_CONF = {
        host: '127.0.0.1',
        user: 'root',
        password: '@1q2w3e4r!',
        port: '8886',
        database: 'tdzq'
    };
};

module.exports = {
    MYSQL_CONF
};

正在回答

1回答

看样子是 mysql 连接的错误。

你手动将 env 改成 pro ,然后试试 mysql 能否连接成功?

1 回复 有任何疑惑可以回复我~
  • 提问者 默笙轻歌 #1
    谢谢老师的回答。我找到问题了,我用的是阿里云的服务器,填的是内网的IP 但是相应的端口没开,我把数据库放在同一台服务器上,将IP地址改为locohost就可以了
    回复 有任何疑惑可以回复我~ 2021-03-03 16:56:02
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号