Rails Webpacker:rails-erb-loader解析失败问题求助
解决rails-erb-loader加载失败(ERROR code:1)的问题
你遇到的这个ERROR in ./app/javascript/packs/hello_erb.js.erb Module build failed: Error: rails-erb-loader failed with code: 1错误,确实大概率是webpack找不到正确的Ruby二进制路径导致的,我来帮你一步步排查解决:
1. 明确指定Ruby可执行文件路径
rails-erb-loader需要知道Ruby的具体位置,你可以在webpack配置里直接配置:
- 打开
config/webpack/environment.js(Webpacker的核心配置文件) - 添加Ruby路径配置,代码如下:
const { environment } = require('@rails/webpacker'); // 给rails-erb-loader指定Ruby路径 environment.loaders.get('erb').use[0].options = { runner: '/usr/bin/ruby', // 替换成你自己的Ruby实际路径 // 如果你用rbenv或rvm,路径可能是 ~/.rbenv/shims/ruby 或者 ~/.rvm/rubies/ruby-3.2.0/bin/ruby 这类 }; module.exports = environment;
怎么找自己的Ruby路径?在终端里运行which ruby,输出的就是正确路径。
2. 检查rails-erb-loader版本兼容性
版本不匹配也可能导致这类奇怪的加载错误:
- 先卸载当前版本:
npm uninstall rails-erb-loader - 安装和你的Webpacker、Rails版本适配的版本,比如针对Webpacker 5,推荐安装
5.5.2版本:npm install rails-erb-loader@^5.5.2 --save-dev
3. 排查.erb文件本身的语法错误
有时候错误不是配置问题,而是你的.erb文件里有Ruby语法错误,你可以先简化hello_erb.js.erb的内容测试:
console.log('Hello from ERB!');
如果这个简化版能正常编译,那说明你原来的.erb文件里有语法问题,需要逐行排查里面的Ruby代码。
4. 验证Webpacker的ERB加载器配置是否正确
确保rake webpacker:install:erb正确生成了加载器配置:
- 检查
config/webpack/loaders/erb.js文件是否存在,内容应该类似:
module.exports = { test: /\.erb$/, enforce: 'pre', exclude: /node_modules/, use: [{ loader: 'rails-erb-loader', options: {} }] };
如果这个文件不存在,说明安装过程出了问题,你可以手动创建它,然后在environment.js里引入:
const erbLoader = require('./loaders/erb'); environment.loaders.prepend('erb', erbLoader);
5. 清理缓存重新编译
缓存有时候会引发诡异的问题,执行以下命令清理后重新编译:
bundle exec rails webpacker:clean bundle exec rails webpacker:compile
按照这些步骤一步步来,应该就能解决你遇到的加载失败问题了。
内容的提问来源于stack exchange,提问作者ProxyGear
相关产品推荐
相关产品推荐

