我在开发过程中设置了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",
并且文件确实存在于该位置。
请注意,该应用程序最近已从Webrick
上运行转移到Puma
,但我认为此处没有任何迹象表明这是一个问题。
我不确定从哪里开始排除故障。任何人都可以分享下一步我应该尝试的建议,或者可能导致这种情况的原因吗?
答案 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
安装browserifyrake 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)
我今天有这个。这对我有用
heroku/nodejs
。从此
更改了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