从heroku上的rails app运行npm包

时间:2017-03-01 23:22:23

标签: ruby-on-rails heroku npm

在我的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包的代码不起作用。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

这篇文章有点过时了。您不再需要heroku-buildpack-multi之类的内容来配置多个buildpack。此外,该项目已被弃用。从您的应用中删除它,只需添加官方buildpack heroku/nodejsheroku/ruby。首先添加nodejs通常是个好主意。然后尝试重新部署您的应用程序。

如果它不起作用,请尝试使用heroku run bash登录您的应用程序dyno并验证您确实拥有package.json。检查某处是否未被忽略,例如.gitignore.slugignore

如果它仍然不起作用,则可能是您将所需的包添加为dev依赖项。如果是这样,请将配置变量NPM_CONFIG_PRODUCTION设置为false

希望这有帮助。

答案 1 :(得分:0)

我认为我首先做到了这一点,但是为了记录,这是有效的。

  • 在我的回购中,我跑过并走过$npm init
  • 的步骤
  • 使用$npm install osmtogeojson --save
  • 添加了我需要的npm包
  • 将我的buildpack添加到heroku $heroku config:add heroku/nodejs
  • 将我的回购推送至heroku $git push heroku master

现在有效!