【问题标题】:Node app runs locally but crashes on heroku (process.env.PORT set)Node 应用程序在本地运行,但在 heroku 上崩溃(process.env.PORT 集)
【发布时间】:2013-11-03 18:17:41
【问题描述】:

我的仓库中有这个版本的博客: https://github.com/pandrei/pandrei_test/tree/master/pandrei-blog

(随意克隆和测试它)

作为本教程的结果:

http://blog.davydewaele.be/node-powered-git-blog-with-wheat

我在本地对其进行了测试,它运行正常,但是它在 Heroku 上崩溃了。

Heroku 日志:

2013-10-24T20:23:55.610646+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path=/ host=pandrei-blog.herokuapp.com fwd="---.---.---.---" dyno=web.1 connect=0ms service=25ms status=503 bytes=0
2013-10-24T20:23:55.590168+00:00 app[web.1]: path.exists is now called `fs.exists`.
2013-10-24T20:23:55.601900+00:00 app[web.1]:       ^
2013-10-24T20:23:55.601882+00:00 app[web.1]:       callback(err);
2013-10-24T20:23:55.605427+00:00 app[web.1]:     at ChildProcess.<anonymous> (/app/node_modules/wheat/node_modules/git-fs/lib/git-fs.js:208:7)
2013-10-24T20:23:55.601326+00:00 app[web.1]: 
2013-10-24T20:23:55.605444+00:00 app[web.1]:     at maybeClose (child_process.js:735:16)
2013-10-24T20:23:55.605439+00:00 app[web.1]:     at ChildProcess.EventEmitter.emit (events.js:98:17)
2013-10-24T20:23:55.605456+00:00 app[web.1]:     at Socket.EventEmitter.emit (events.js:95:17)
2013-10-24T20:23:55.605464+00:00 app[web.1]:     at Pipe.close (net.js:466:12)
2013-10-24T20:23:55.605452+00:00 app[web.1]:     at Socket.<anonymous> (child_process.js:948:11)
2013-10-24T20:23:55.605415+00:00 app[web.1]: TypeError: undefined is not a function
2013-10-24T20:23:55.601639+00:00 app[web.1]: /app/node_modules/wheat/node_modules/git-fs/lib/git-fs.js:208
2013-10-24T20:23:56.652015+00:00 heroku[web.1]: Process exited with status 8
2013-10-24T20:23:56.669381+00:00 heroku[web.1]: State changed from up to crashed

我刚开始使用 Heroku,我真的不明白它为什么会崩溃。

有人能解释一下这个原因或如何“调试”这个吗?

谢谢!

【问题讨论】:

    标签: git node.js heroku


    【解决方案1】:

    所以我想到了两件事:

    1. 您在本地运行的节点版本似乎与运行 heroku 的版本不同。
    2. path.exists 显然是问题的原因,这是一个已弃用的功能。

    我会upgrade to the latest node version 看看你是否可以在本地重现(如果是这样,第一次诊断是正确的),然后在你的代码中搜索path.exists 并用fs.exists 替换它,这应该可以解决问题:)

    编辑:在查看并删除了小麦的来源之后,我真诚地建议尝试不同的博客引擎。 Wheat 已过时,未维护,并且在所有最新版本的节点中都已损坏。此外,小麦的一些依赖是同一作者编写的,在最近的节点构建中也没有维护和损坏。如果您计划建立一个博客,那么您希望建立在维护良好和积极更新的技术上,而不是使用陈旧和损坏的技术。

    如果您追求更流畅、更现代的博客系统,我建议您查看ghost。它维护得非常好,主题化,易于部署,甚至还有一个用于在后端编辑和创建帖子的 gui。如果您正在寻找更简单和黑客的东西,如果您可以使用 ruby​​,我建议jekyll,如果您更喜欢 node,我建议您使用roots。我是 root 的维护者,它被积极维护和更新,支持仅使用 markdown 文件制作的简单博客,并且有一个命令部署到 heroku。如果您希望我为您设置一个示例博客,我很乐意添加到这个答案中,请告诉我:)

    【讨论】:

    • 没错,但我跑了 find 。 | xargs grep 'path.exists' -sl 在我的 repo 根文件夹中,我的代码库中没有这样的功能
    • @pAndrei 它依赖于小麦
    • 可能实际上是小麦的问题 - 它向您显示了产生错误的行:/app/node_modules/wheat/node_modules/git-fs/lib/git-fs.js:208 - 您的小麦版本是您的 package.json 文件中的最新版本吗?
    • 您可以将package.json 文件的内容添加到问题中吗?
    • 内容也在repo中
    猜你喜欢
    • 2020-07-17
    • 2020-08-30
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多