Rails 5.1 webpacker"导入"一个.js.erb文件?

eag*_*poo 5 ruby-on-rails ruby-on-rails-5.1 webpacker

app/javascript/packs/application.js我正在尝试import "../foo"文件的位置foo.js.erb.Webpacker和yarn适用于application.js中的其他导入,例如import "../bar"当该文件存在bar.js但是如果我尝试使用.js.erb文件时,我从webpack-dev-server获得此错误:

ERROR in ./app/javascript/packs/application.js
Module not found: Error: Can't resolve '../foo' in '/Users/blah/backlot/projects/test/app/javascript/packs'
 @ ./app/javascript/packs/application.js 3:0-27
 @ multi (webpack)-dev-server/client?http://localhost:8080 ./app/javascript/packs/application.js
Run Code Online (Sandbox Code Playgroud)

我确实安装了rails-erb-loader,如果我查看webpacker配置,那么erb加载器正在评估并且看起来对我来说虽然我没有触及任何其他的,除了运行rails webpacker:install生成该配置.

eag*_*poo 13

如果您想要做的是这样的:

import '../foo'
Run Code Online (Sandbox Code Playgroud)

当实际文件是foo.js.erb,您需要更新config/webpack/paths.yml以包含

- .js.erb
Run Code Online (Sandbox Code Playgroud)

在扩展名列表中.否则,您需要完全指定要导入的文件名

import '../foo.js.erb'
Run Code Online (Sandbox Code Playgroud)

  • 似乎不再是config / webpack / paths.yml,而是必须更新的config / webpack / webpacker.yml。令人困惑的是,扩展名列表已经包含`-.erb`,但是要添加的扩展名是`-.js.erb`。 (5认同)
  • 不要忘记先为webpacker安装.erb支持:https://github.com/rails/webpacker#erb (5认同)
  • Rails 6 更新,路径为 `config/webpacker.yml` (2认同)

cdm*_*dmo 13

要在 JS 模板中添加 Erb 支持,请bundle exec rails webpacker:install:erb在已使用 Webpacker 设置的 Rails 应用程序上运行。

来源(来自 cseelus 的评论)


fyd*_*lio 6

对于 rails 6.x,运行bundle exec rails webpacker:install:erb并将以下内容添加到config/webpacker.yml

extensions:
  - .erb
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅webpacker 文档