错误:无法在生产中运行browserify(Heroku)

时间:2016-05-02 11:01:40

标签: heroku browserify

我在开发过程中设置了Browserify,效果很好。但是当我尝试将应用程序推送到Heroku时,推送失败了。

  

遥控器:----->为Rails资产管道准备应用程序

     

remote:正在运行:rake assets:precompile

     

遥控器:rake aborted!

错误:

  

remote:BrowserifyRails :: BrowserifyError:无法运行   node_modules /的.bin / browserify。确保已使用npm安装它。

我可以确认browserify中有package.json

"browserify": "~10.2.4",
"browserify-incremental": "^3.0.1",

并且文件确实存在于该位置。

enter image description here

请注意,该应用程序最近已从Webrick上运行转移到Puma,但我认为此处没有任何迹象表明这是一个问题。

我不确定从哪里开始排除故障。任何人都可以分享下一步我应该尝试的建议,或者可能导致这种情况的原因吗?

3 个答案:

答案 0 :(得分:2)

以下是处理此问题的方法:

配置Heroku以使用multi-buildpack

heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git

创建.buildpacks文件

为multi-buildpack创建.buildpacks文件,以确保在ruby之前编译node.js。

https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-ruby

使用--save

安装browserify

rake assets:heroku deploy中的预编译需要将browserify安装在.node_modules目录中。所以将它从devDependencies移到依赖项。

npm uninstall browserify --save-dev
npm install browserify --save

现在尝试再次部署!

git push heroku master

现在应该可以了。

答案 1 :(得分:2)

使用heroku buildpacks:add --index 1 heroku/nodejs

heroku-buildpack-multi 并且已弃用.buildpacks文件。

答案 2 :(得分:1)

我今天有这个。这对我有用

  1. 将浏览器更改为常规依赖关系,因为已接受的答案已完成。
  2. 重新排序构建包以首先放置heroku/nodejs
  3. 从此

    更改了package.json
    "devDependencies": {
      "browserify": "^12.0.1",
       ...
    }
    

    到此

    "dependencies": {
      "browserify": "^12.0.1",
      ...
    }
    

    重新订购buildpacks

    heroku buildpacks的初始输出

    1. heroku/ruby
    2. heroku/nodejs
    

    所以我做了

    $ heroku buildpacks:remove heroku/ruby
    $ heroku buildpacks:add heroku/ruby
    

    将其更改为

    1. heroku/nodejs
    2. heroku/ruby