Ruby on rails Rails Webpacker:Rails erb加载程序解析失败。html.erb

Ruby on rails Rails Webpacker:Rails erb加载程序解析失败。html.erb,ruby-on-rails,webpack,erb,webpacker,Ruby On Rails,Webpack,Erb,Webpacker,我尝试使用rails erb加载程序 在我家 import templateString from './home.component.html'; 我有一个home.component.html.erb <div class="row">...</div> 我猜加载ruby bin是一个配置错误,我想我可以解决这个问题,我真正的问题是以下错误: ERROR in ./app/javascript/packs/hello_erb.js.erb Module build

我尝试使用rails erb加载程序

在我家

import templateString from './home.component.html';
我有一个home.component.html.erb

<div class="row">...</div>
我猜加载ruby bin是一个配置错误,我想我可以解决这个问题,我真正的问题是以下错误:

ERROR in ./app/javascript/packs/hello_erb.js.erb
Module build failed: Error: rails-erb-loader failed with code: 1
ERROR in ./app/javascript/hello_angular/app/home/home.component.html.erb
Module parse failed: Unexpected token (1:0)
直截了当的我的配置:

config/webpack/loaders/erb.js

module.exports = {
  test: /\.erb$/,
  enforce: 'pre',
  exclude: /node_modules/,
  use: [{
    loader: 'rails-erb-loader',
    options: {
      runner: (/^win/.test(process.platform) ? 'ruby ' : '') + 'bin/rails runner'
    }
  }]
}
config/webpack/environment.js

const { environment } = require('@rails/webpacker')

const typescript =  require('./loaders/typescript')
environment.loaders.append('typescript', typescript)

const html = require('./loaders/html')
environment.loaders.append('html', html)

const erb =  require('./loaders/erb')
environment.loaders.append('erb', erb)

module.exports = environment
我在config/webpacker.yml中启用了
.erb
扩展

我的直觉是,出于某种原因,我的
.html.erb
被解析为javascript。。。我不知道为什么

我深入研究了
webpacker
rails\u erb\u loader
问题,但没有成功。 有什么想法吗

顺便说一句,我看到了类似的问题:

好的,所以这最终非常简单

我创建了一个加载程序定义html_erb.js

module.exports = {
  test: /\.html.erb$/,
  loader: [
    'rails-erb-loader',
    'html-loader'
  ]
};
就是这样,它在经典erb加载程序之前捕获并将输出转换为html。。。 这正是我希望rails erb装载机能够正确完成的任务,但是


无论如何,它都可以工作:D

此外,如果您执行以下操作,webpacker将提供erb加载程序:

rails webpacker:install:erb

我有一个类似的错误,并通过在config/webpacker.rb中添加以下内容修复了它:

default:
  extensions:
    - .js.erb # first array entry
并在config/webpacker/environments.js中将erb的
append
替换为
prepend

environment.loaders.prepend('erb', erb)

希望这能对将来的人有所帮助:我们犯了这个错误,因为我们的Ruby不正确,无法编译


尝试了所有配置,深入了Webpack(er)内部。最后,我们在erb文件中输入的变量名不正确。

那么,为什么
html.erb$
重要,而
.erb
也应该匹配呢?它真的捡起了你的
.js.erb
文件吗?好问题,我删除了我上面提到的
.js.erb
。用ruby通过
.js.erb
为js做模板让我觉得很奇怪,只是个人喜好。所以在我的项目中没有这样的东西。我帮不了你,已经有一段时间了。就我记忆所及。。。我的问题是它只针对
.js.erb
而不是
.html.erb
。但要检查真的,可能是我也只是错过了使用它。。。