在我的rails应用程序中,我有一个运行以下内容的模块:
system("osmtogeojson #{input_path} > #{output_path}")
这适用于我的本地计算机,因为我安装了特定的npm包(osmtogeojson)。我将我的应用程序部署在Heroku上,我无法让Heroku安装NPM或我的NPM软件包。
我按照教程here添加了packages.json以及正在运行的
heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
并使用:
创建.buildpacks文件https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-ruby
当我部署到Heroku时,我没有看到它与我的依赖项一起运行npm install,而且我调用npm包的代码不起作用。我在这里做错了什么?
答案 0 :(得分:0)
这篇文章有点过时了。您不再需要heroku-buildpack-multi
之类的内容来配置多个buildpack。此外,该项目已被弃用。从您的应用中删除它,只需添加官方buildpack heroku/nodejs
和heroku/ruby
。首先添加nodejs通常是个好主意。然后尝试重新部署您的应用程序。
如果它不起作用,请尝试使用heroku run bash
登录您的应用程序dyno并验证您确实拥有package.json。检查某处是否未被忽略,例如.gitignore
或.slugignore
。
如果它仍然不起作用,则可能是您将所需的包添加为dev依赖项。如果是这样,请将配置变量NPM_CONFIG_PRODUCTION
设置为false
。
希望这有帮助。
答案 1 :(得分:0)
我认为我首先做到了这一点,但是为了记录,这是有效的。
$npm init
$npm install osmtogeojson --save
$heroku config:add heroku/nodejs
$git push heroku master
现在有效!