我刚刚完成了我的项目,如果我在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)
有人知道为什么吗?谢谢!
答案 0 :(得分:0)
您可以查看以下内容:
Kraken应用程序希望所有资源(已编译的灰尘模板,已编译的LESS文件等)都存在于.build
目录中。
但是,当在那里找不到资源时,应用程序的行为是特定于环境的,基于当前的NODE_ENV
环境变量。
如果未指定,默认情况下,Kraken应用程序将以development
模式运行。
在.build
中找不到资源时,应用会尝试动态生成资源。
这样做是为了方便开发人员,这意味着您不必在每次进行更改时都构建应用程序,因为在运行服务器时将动态编译和加载资源。 (例如:如果您对模板进行了更改,并重新加载该页面,则您的更改将立即显示。无需构建)
效率较低,因此通常需要在部署之前预编译所有资源(灰尘模板,LESS文件等)。
默认情况下,Heroku是 PRODUCTION 环境(请参阅documentation),并将NODE_ENV
设置为production
。
在production
模式下部署时,您的应用会期望所有资源都可在.build
目录中使用。如果找不到资源,它将放弃。
<强>解决方案强>
通过运行grunt build
在部署之前构建您的应用(请参阅Documentation)
确保.build
目录也部署到Heroku。