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 上部署时出现问题