我有一个项目,最近已经升级到Rails 5.2,并且我正在使用Webpacker gem。尝试部署到Heroku时,我遇到了以下错误:
我注意到Heroku的输出提到了使用config/webpacker.yml设置webpack路径,但我在该文件中找不到任何关于在node_modules中查找webpack的提及 - 这是webpacker.yml的文本:
整个项目可以在GitHub上找到。
...
remote: Webpacker is installed
remote: Using /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/config/webpacker.yml file for setting up webpack paths
remote: Compiling…
remote: Compilation failed:
remote: /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:11:in `exec': No such file or directory - /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/node_modules/.bin/webpack (Errno::ENOENT)
remote: from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:11:in `block in run'
remote: from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:10:in `chdir'
remote: from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/webpack_runner.rb:10:in `run'
remote: from /tmp/build_b969a2366f45a65a0c09b6aaa4b24667/vendor/bundle/ruby/2.5.0/gems/webpacker-3.5.5/lib/webpacker/runner.rb:6:in `run'
remote: from ./bin/webpack:15:in `<main>'
...
本地我的“node_modules”目录在.gitignore中(我相信webpacker的一个安装脚本把它放在那里)。
我需要取消忽略node_modules,还是需要在配置文件中添加一些内容来告诉远程服务器如何找到webpack?
这是我的package.json:
{
"dependencies": {
"@rails/webpacker": "3.5.5",
"babel-preset-react": "^6.24.1",
"d3": "^5.7.0",
"jquery": "^3.3.1",
"prop-types": "^15.6.2",
"react": "^16.5.2",
"react-addons-transition-group": "^15.6.2",
"react-dom": "^16.5.2",
"react-transition-group": "^2.4.0",
"react_ujs": "^2.4.4"
},
"devDependencies": {
"webpack-dev-server": "2.11.2"
},
"engines": {
"yarn": "1.10.1"
}
}
我注意到Heroku的输出提到了使用config/webpacker.yml设置webpack路径,但我在该文件中找不到任何关于在node_modules中查找webpack的提及 - 这是webpacker.yml的文本:
# Note: You must restart bin/webpack-dev-server for changes to take effect
default: &default
source_path: app/javascript
source_entry_path: packs
public_output_path: packs
cache_path: tmp/cache/webpacker
# Additional paths webpack should lookup modules
# ['app/assets', 'engine/foo/app/assets']
resolved_paths: []
# Reload manifest.json on all requests so we reload latest compiled packs
cache_manifest: false
extensions:
- .jsx
- .js
- .sass
- .scss
- .css
- .module.sass
- .module.scss
- .module.css
- .png
- .svg
- .gif
- .jpeg
- .jpg
development:
<<: *default
compile: true
# Reference: https://webpack.js.org/configuration/dev-server/
dev_server:
https: false
host: localhost
port: 3035
public: localhost:3035
hmr: false
# Inline should be set to true if using HMR
inline: true
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: /node_modules/
test:
<<: *default
compile: true
# Compile test packs to a separate directory
public_output_path: packs-test
production:
<<: *default
# Production depends on precompilation of packs prior to booting for performance.
compile: false
# Cache manifest.json for performance
cache_manifest: true
整个项目可以在GitHub上找到。
package.json
文件中是否有 webpack 作为依赖项? - sdgluck@rails/webpacker
,但没有 webpacker。我已更新问题,包括 package.json 的文本。 - Fred Willmore@rails/webpacker
但没有webpack
。 - Fred Willmore