Heroku Node.js 应用程序在本地工作,但在部署时不工作

Posted

技术标签:

【中文标题】Heroku Node.js 应用程序在本地工作,但在部署时不工作【英文标题】:Heroku Node.js App Works Locally but not when deployed 【发布时间】:2015-07-24 07:31:06 【问题描述】:

我有一个运行良好的 MEAN Stack Heroku 应用程序。但后来我添加了一个新功能:

app.get('/userCreated/:id', function(req, res) 

if (req.cookies.userCreated == req.params.id)  
    res.send(true);

else 
    res.send(false);


);

现在我在加载应用程序时收到 503(服务不可用)错误。有人知道为什么会这样吗?

我正在使用 Angular 和 $http.get() 来访问这个 Express.js 函数...

编辑:这是我正在调用服务器的客户端 Angular 代码:

var deferred = $q.defer();
function thisUserCreated(id) 
$http.get('/userCreated/' + id).success(function(data) 
deferred.resolve(data);
// returns boolean indicating whether the current user has the proper cookie
// saying this user created the given group
);
return deferred.promise;
;

【问题讨论】:

bn 偶然或它是代码的一部分 糟糕。接得好。但这不是问题。还有其他想法吗? 你在服务器上使用的port,在部署服务器上可以免费使用吗 同样,这个函数在 localhost 上表现正常,但在部署到 heroku 时会起作用 @Tushar 我相信。在添加此功能之前,此应用在 Heroku 上部署时运行正常 【参考方案1】:

该代码块中没有任何东西天生就被破坏了。

只需检查日志,看看是什么给了你错误:

heroku logs --tail

【讨论】:

我已经用发出 http 请求的客户端代码更新了我的问题。也许那里有问题? 如果您在服务器上收到 503,您真的应该检查服务器日志以了解原因。【参考方案2】:

嗯,我确实想通了。原来我没有在 package.json 中列出所有依赖项。

这里的教训:安装节点包时总是使用--save

否则你会过得很糟糕。

【讨论】:

【参考方案3】:

尝试重新编译 (ng build -prod) Angular 端并再次部署。还可以观看MEAN Stack Front To Back [Part 10] - App Deployment to Heroku

【讨论】:

【参考方案4】:

我使用 Node/Heroku 退出状态 1 和状态 H10 等以多种不同形式处理了这个问题。我搜索并尝试了从清除节点缓存到通过 git 回滚所有内容并重新开始的所有方法。好像我的 node_modules 一直在某个地方更新,我会从出错到在本地运行,再到部署后崩溃。唯一有效的方法是在我的 .gitignore 文件中“不签入生成的目录”,如果在这种情况下适用于其他人,这似乎是一个愚蠢而明显的解决方案。可以在这里找到不同的故障排除步骤https://devcenter.heroku.com/articles/troubleshooting-node-deploys

【讨论】:

以上是关于Heroku Node.js 应用程序在本地工作,但在部署时不工作的主要内容,如果未能解决你的问题,请参考以下文章

Node.js + Mongoose 可以在本地工作,但不能在 Heroku 上工作

Node.js MEAN Stack App 在本地工作,但无法部署到 Heroku

node.js 项目在本地机器上工作,在 Heroku 上部署时出现问题

Node.js Heroku 应用程序上的 TCP 连接

如何在 heroku 上远程调试 node.js 应用程序?

使用Heroku部署Node.js应用程序 - 启动脚本