将节点js项目部署到主机后出现内部服务器错误

时间:2016-11-15 07:58:41

标签: node.js heroku kraken.js

我刚刚完成了我的项目,如果我在localhost上运行它,一切似乎都没问题。但是我在Heroku上部署项目后,构建过程没问题,当我尝试访问网站时,我得到了Internal Server Error,我不知道日志会告诉我什么(我会粘贴记录下面)。

VError: Failed to lookup view "index.js" in directory "/app/.build/templates"

at /app/node_modules/makara/node_modules/engine-munger/index.js:99:33
at iterate (/app/node_modules/makara/node_modules/engine-munger/node_modules/permutron/index.js:91:20)
at iterate (/app/node_modules/makara/node_modules/engine-munger/node_modules/permutron/index.js:91:20)

有人知道为什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以查看以下内容:

Kraken应用程序希望所有资源(已编译的灰尘模板,已编译的LESS文件等)都存在于.build目录中。

但是,当在那里找不到资源时,应用程序的行为是特定于环境的,基于当前的NODE_ENV环境变量。

如果未指定,默认情况下,Kraken应用程序将以development模式运行。 在.build中找不到资源时,应用会尝试动态生成资源。

这样做是为了方便开发人员,这意味着您不必在每次进行更改时都构建应用程序,因为在运行服务器时将动态编译和加载资源。 (例如:如果您对模板进行了更改,并重新加载该页面,则您的更改将立即显示。无需构建)

效率较低,因此通常需要在部署之前预编译所有资源(灰尘模板,LESS文件等)。

默认情况下,Heroku是 PRODUCTION 环境(请参阅documentation),并将NODE_ENV设置为production

production模式下部署时,您的应用会期望所有资源都可在.build目录中使用。如果找不到资源,它将放弃。

<强>解决方案 通过运行grunt build在部署之前构建您的应用(请参阅Documentation) 确保.build目录也部署到Heroku。

相关问题