node.js - Node.js - 此代码运行时 Heroku 服务器崩溃
问题描述
我有一个在我的本地主机上完美运行的 Node.js 应用程序。
但是,当我上传到 Heroku 时,一旦执行了部分代码,服务器就会崩溃。
给定的代码应该从表单传递的 URL 字符串中提取一部分。
这是导致服务器崩溃的代码:
function getUserDetails(username) {
return new Promise(done => {
var data = [];
https.get(`https://www.instagram.com/${username}/?__a=1`, resp => {
resp.on('data', chunk => data.push(chunk));
resp.on('end', () => {
var json = JSON.parse(data.join(''));
done(json.graphql.user);
});
});
});
}
在 Heroku 崩溃之后 - 它仍然持续崩溃,我用heroku logs --tail
.
这是来自日志的报告:
2019-10-06T10:59:40.782839+00:00 app[web.1]: undefined:1
2019-10-06T10:59:40.782863+00:00 app[web.1]:
2019-10-06T10:59:40.782865+00:00 app[web.1]:
2019-10-06T10:59:40.782867+00:00 app[web.1]:
2019-10-06T10:59:40.782870+00:00 app[web.1]: SyntaxError: Unexpected end of JSON
input
2019-10-06T10:59:40.782872+00:00 app[web.1]: at JSON.parse (<anonymous>)
2019-10-06T10:59:40.782874+00:00 app[web.1]: at IncomingMessage.resp.on (/app/ap
p/routes.js:108:33)
2019-10-06T10:59:40.782876+00:00 app[web.1]: at IncomingMessage.emit (events.js:
203:15)
2019-10-06T10:59:40.782878+00:00 app[web.1]: at endReadableNT (_stream_readable.
js:1145:12)
2019-10-06T10:59:40.782880+00:00 app[web.1]: at process._tickCallback (internal/
process/next_tick.js:63:19)
2019-10-06T10:59:40.869547+00:00 heroku[web.1]: State changed from up to crashed
2019-10-06T10:59:40.847583+00:00 heroku[web.1]: Process exited with status 1
2019-10-06T10:59:40.790256+00:00 heroku[router]: at=error code=H13 desc="Connect
ion closed without response" method=POST path="/MY_PATH" host=MY_HOST.herok
uapp.com request_id=15118004-c799-45bd-a0a9-909cbd3a5e86 fwd="130.43.125.250" dy
no=web.1 connect=1ms service=101ms status=503 bytes=0 protocol=https
解决方案
你从哪里得到 url 值?看起来您正在从 json 输入中读取其他位置,并且格式不正确或缺少标签等。
在本地运行您的一段代码时,它按预期工作。
var URL = require('url').URL;
url = "stackoverflow.com/questions/58256767/node-js-heroku-server-crashes-when this-code-runs";
if(!/^https?:\/\//i.test(url)){
url = "http://" + url;}
let parsed = new URL(url);
let retrieved = parsed.pathname.split('/')[1];
输出 :
node v10.16.0
=> 'http://stackoverflow.com/questions/58256767/node-js-heroku-server-crashes-when-this-code-runs'
推荐阅读
- java - Sendgrid 和 java
- ios - Appcelerator / Titanium - 在 iPhone X 上,如何使 ToolBar 颜色填充到屏幕底部?
- python - 虚拟环境在 Django 中不起作用
- c - 将 printf 用于混合类型的三元运算符参数
- javascript - 添加更多
在渲染中 - java - 按字母顺序对链表进行排序
- c# - 在 webview 上设置的请求标头未通过
- powershell - 删除表达式 Powershell 中的字符
- abap - 为什么 ABAP 将字符串剪切为一个字符?
- ruby-on-rails - 如何在 Rails 中查找类中的所有枚举字段