我在我的heroku node.js应用程序中使用this custom buildpack,以便在coffeescript中编写我的应用程序。使用经典的雪松堆,一切都运行良好超过一年。但是该堆栈计划在2015年11月弃用,而不是Cedar-14堆栈。
我关注了upgrade instructions,当我将我的应用推送到heroku(没有任何代码更改)时,自定义构建包在编译阶段无法正常工作。具体来说,它无法检测到我的应用依赖的node.js的版本,并将其默认为0.4.7,这太旧了,我的应用程序和heroku将无法使用该版本。
以下是编译阶段的输出:
$ git push heroku HEAD:master
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 635 bytes | 0 bytes/s, done.
Total 7 (delta 6), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Fetching custom git buildpack... done
remote: -----> Coffeescript app detected
remote: -----> Resolving engine versions
remote:
remote: WARNING: No version of Node.js specified in package.json, see:
remote: https://devcenter.heroku.com/articles/nodejs-versions
remote:
remote: WARNING: The default version of Node.js and npm on Heroku will begin
remote: tracking the latest stable release starting September 1, 2012.
remote:
remote: Using Node.js version: 0.4.7
remote: Using npm version: 1.0.106
我的package.json正确列出了节点版本,而且一直在使用雪松堆:
"engines": {
"node": "0.10.x",
"npm": "1.3.x"
}
尝试确定节点版本的自定义生成包中的This is the line of code。当我手动模拟它时,它工作得很好。但是当在推送到heroku期间发生这种检测时,它就失败了。
$ cat package.json | node /usr/local/bin/json engines.node
0.12.x
Heroku的指南似乎暗示buildpack必须专门支持新的cedar-14堆栈:here。但我没看到我正在使用的这个自定义构建包有什么问题。
答案 0 :(得分:0)
关于此问题发表了Chris Fung - 有问题custom buildpack的原始作者,他建议将他的回溯重新定位到最新的nodejs official Heroku buildpack。我是在自己的fork of the repo中做到的。
然后我将我的coffeescript应用程序的堆栈更改为Cedar-14,并将buildpack更改为此new one。现在一切都有效。
$ heroku buildpacks:set https://github.com/sailrish/heroku-buildpack-coffee
$ heroku stack:set cedar-14
$ git push heroku master