首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Webpacker : rails-erb-loader无法解析.html.erb

Rails Webpacker : rails-erb-loader无法解析.html.erb
EN

Stack Overflow用户
提问于 2018-04-07 01:59:42
回答 4查看 2.9K关注 0票数 3

我尝试使用rails-erb-loader。

在我的home.component.ts

代码语言:javascript
复制
import templateString from './home.component.html';

我有一台home.component.html.erb

代码语言:javascript
复制
<div class="row">...</div>

我还有一个由rake webpacker:install:erb生成的app/javascript/packs/hello_erb.js.erb

我得到以下错误:

代码语言:javascript
复制
ERROR in ./app/javascript/packs/hello_erb.js.erb
Module build failed: Error: rails-erb-loader failed with code: 1

我猜这是一个加载ruby bin的配置错误,我想我可以解决这个问题,我真正的问题是以下错误:

代码语言:javascript
复制
ERROR in ./app/javascript/hello_angular/app/home/home.component.html.erb
Module parse failed: Unexpected token (1:0)

直接输入我的配置:

config/webpack/loaders/erb.js

代码语言:javascript
复制
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 .js

代码语言:javascript
复制
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……我不知道为什么。

我深入研究了webpackerrails_erb_loader问题,但没有成功。有什么想法吗?

顺便说一句,我看到了类似的问题:Webpacker in Rails Project using angular cannot import .html.erb and .css from external template

EN

回答 4

Stack Overflow用户

发布于 2018-04-10 09:42:35

此外,如果您执行以下命令,webpacker将提供erb加载器:

代码语言:javascript
复制
rails webpacker:install:erb
票数 1
EN

Stack Overflow用户

发布于 2018-11-06 02:10:26

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

代码语言:javascript
复制
default:
  extensions:
    - .js.erb # first array entry

并在配置/webpacker/environments.js.js中将erb的append替换为prepend

代码语言:javascript
复制
environment.loaders.prepend('erb', erb)
票数 1
EN

Stack Overflow用户

发布于 2018-04-07 07:41:56

好了,这最终是非常简单的…

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

代码语言:javascript
复制
module.exports = {
  test: /\.html.erb$/,
  loader: [
    'rails-erb-loader',
    'html-loader'
  ]
};

就是这样,它在经典的erb加载程序之前捕获并将输出转换为html…这就是我希望rails-erb-loader能做的事情,但是...

无论如何,它是有效的:D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49698592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档