javascript - Heroku Node 部署 "internal server error"

标签 javascript mysql node.js heroku deployment

我已将我的应用程序部署到heroku。一旦我进入用户注册页面并输入我的凭据,网站就会立即崩溃,显示 internal server error在浏览器中,并在 heroku logs 中给我这个.

我不确定可能是什么问题,所以我不知道要提供哪个代码?我不认为这与 MySQL 有关,但考虑到错误报告中提到了它,可能是?不管怎样,这里都是我的connection.js :

const mysql = require('mysql');
let connection;

if (process.env.JAWSDB_URL) {
    connection = mysql.createConnection(process.env.JAWSDB_URL);
} else {
    connection = mysql.createConnection({
        host: 'localhost',
        port: 3306,
        user: 'root',
        password: '',
        database: 'trythis_db'
    });
};

connection.connect(function(err) {
    if (err) {
        console.log(err);
    } else {
        console.log('mysql is connected');
    };
});


module.exports = connection;

这是我的错误代码:

2017-12-04T04:58:51.486756+00:00 app[web.1]: Error: connect ECONNREFUSED 127.0.0.1:3306
2017-12-04T04:58:51.486150+00:00 app[web.1]: POST /signup 302 287.664 ms - 46
2017-12-04T04:58:51.486758+00:00 app[web.1]:     at Object._errnoException (util.js:1024:11)
2017-12-04T04:58:51.486758+00:00 app[web.1]:     at _exceptionWithHostPort (util.js:1046:20)
2017-12-04T04:58:51.486759+00:00 app[web.1]:     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)
2017-12-04T04:58:51.486760+00:00 app[web.1]:     --------------------
2017-12-04T04:58:51.486761+00:00 app[web.1]:     at Protocol._enqueue (/app/node_modules/express-mysql-session/node_modules/mysql/lib/protocol/Protocol.js:145:48)
2017-12-04T04:58:51.486762+00:00 app[web.1]:     at Protocol.handshake (/app/node_modules/express-mysql-session/node_modules/mysql/lib/protocol/Protocol.js:52:23)
2017-12-04T04:58:51.486763+00:00 app[web.1]:     at PoolConnection.connect (/app/node_modules/express-mysql-session/node_modules/mysql/lib/Connection.js:130:18)
2017-12-04T04:58:51.486763+00:00 app[web.1]:     at Pool.getConnection (/app/node_modules/express-mysql-session/node_modules/mysql/lib/Pool.js:48:16)
2017-12-04T04:58:51.486764+00:00 app[web.1]:     at Pool.query (/app/node_modules/express-mysql-session/node_modules/mysql/lib/Pool.js:202:8)
2017-12-04T04:58:51.486765+00:00 app[web.1]:     at MySQLStore.set (/app/node_modules/express-mysql-session/lib/index.js:192:19)
2017-12-04T04:58:51.486766+00:00 app[web.1]:     at Session.save (/app/node_modules/express-session/session/session.js:72:25)
2017-12-04T04:58:51.486766+00:00 app[web.1]:     at Session.save (/app/node_modules/express-session/index.js:381:15)
2017-12-04T04:58:51.486767+00:00 app[web.1]:     at ServerResponse.end (/app/node_modules/express-session/index.js:330:21)
2017-12-04T04:58:51.486768+00:00 app[web.1]:     at ServerResponse.redirect (/app/node_modules/express/lib/response.js:947:10)
2017-12-04T04:58:51.638706+00:00 app[web.1]: Error: connect ECONNREFUSED 127.0.0.1:3306
2017-12-04T04:58:51.638708+00:00 app[web.1]:     at Object._errnoException (util.js:1024:11)
2017-12-04T04:58:51.638709+00:00 app[web.1]:     at _exceptionWithHostPort (util.js:1046:20)
2017-12-04T04:58:51.638710+00:00 app[web.1]:     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)
2017-12-04T04:58:51.638710+00:00 app[web.1]:     --------------------
2017-12-04T04:58:51.638711+00:00 app[web.1]:     at Protocol._enqueue (/app/node_modules/express-mysql-session/node_modules/mysql/lib/protocol/Protocol.js:145:48)
2017-12-04T04:58:51.638712+00:00 app[web.1]:     at Protocol.handshake (/app/node_modules/express-mysql-session/node_modules/mysql/lib/protocol/Protocol.js:52:23)
2017-12-04T04:58:51.638713+00:00 app[web.1]:     at PoolConnection.connect (/app/node_modules/express-mysql-session/node_modules/mysql/lib/Connection.js:130:18)
2017-12-04T04:58:51.638713+00:00 app[web.1]:     at Pool.getConnection (/app/node_modules/express-mysql-session/node_modules/mysql/lib/Pool.js:48:16)
2017-12-04T04:58:51.638714+00:00 app[web.1]:     at Pool.query (/app/node_modules/express-mysql-session/node_modules/mysql/lib/Pool.js:202:8)
2017-12-04T04:58:51.638802+00:00 app[web.1]:     at session (/app/node_modules/express-session/index.js:460:11)
2017-12-04T04:58:51.638800+00:00 app[web.1]:     at MySQLStore.get (/app/node_modules/express-mysql-session/lib/index.js:130:19)
2017-12-04T04:58:51.638803+00:00 app[web.1]:     at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2017-12-04T04:58:51.638804+00:00 app[web.1]:     at trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
2017-12-04T04:58:51.638804+00:00 app[web.1]:     at /app/node_modules/express/lib/router/index.js:284:7

最佳答案

错误的第一行 ( Error: connect ECONNREFUSED 127.0.0.1:3306 ) 表示应用程序正在尝试连接到本地主机,即使它在线托管,它应该尝试连接到在线数据库。您需要找出 if-else 中出了什么问题。声明,因为 else正在执行循环,我猜这适用于您的本地环境。

关于javascript - Heroku Node 部署 "internal server error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626809/

相关文章:

mysql - 如何通过webform向数据库添加数据

mysql - 使用 Sqoop 将来自 MySQL 的数据加载到 PIG 中

javascript - Node.js:process.argv 与 process.ARGV

javascript - 修复了内容在滚动中的 div

javascript - AngularJS UI-router 如何将状态 View 加载到顶级状态的另一个嵌套 View 中?

javascript - Bootstrap,向下滚动后使导航栏变粘?

php - 由于数据库更新而等待事件

javascript - JavaScript 中的 const 关键字 :

node.js - 如何配置通过 Heroku/Node.js 读取的简单静态 AWS S3 图像(403 访问错误)

node.js - 在 npm install socket.io 期间,出现错误 127,找不到 node-waf 命令。如何解决?