Ruby on rails Rails 5.1 webpacker“;进口;一个.js.erb文件?

Ruby on rails Rails 5.1 webpacker“;进口;一个.js.erb文件?,ruby-on-rails,ruby-on-rails-5.1,webpacker,Ruby On Rails,Ruby On Rails 5.1,Webpacker,从app/javascript/packs/application.js中,我试图导入文件所在的foo.js.erb。Webpacker和Thread对于application.js中的其他导入非常有效,例如,import../bar“当该文件为bar.js时,但是如果我尝试使用.js.erb文件,我会从webpack dev服务器收到以下错误: ERROR in ./app/javascript/packs/application.js Module not found: Error: Can

app/javascript/packs/application.js
中,我试图导入文件所在的
foo.js.erb
。Webpacker和Thread对于application.js中的其他导入非常有效,例如,
import../bar“
当该文件为
bar.js
时,但是如果我尝试使用
.js.erb
文件,我会从webpack dev服务器收到以下错误:

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

我确实安装了rails erb loader,如果我查看webpacker配置,erb loader正在被评估,并且看起来对我来说是正确的,尽管除了运行
rails webpacker:install
以生成该配置之外,我没有碰过任何东西。

如果您想做的是:

import '../foo'
当实际文件为
foo.js.erb
时,需要更新
config/webpack/webpack.yml
,以包括

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

import '../foo.js.erb'
要在JS模板中添加Erb支持,请在已使用webpacker安装的rails应用程序上运行
bundle exec rails webpacker:install:Erb


(来自cseelus的评论)

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

extensions:
  - .erb

有关更多信息,请参见:

似乎不再是
config/webpack/paths.yml
而是
config/webpack/webpack.yml
。令人困惑的是,扩展列表已经包含
-.erb
,但要添加的扩展是
-.js.erb
。不要忘记安装。erb对webpacker的支持:rails 6的更新,路径是
config/webpacker.yml
,通过将config/webpacker.yml中的文件扩展名固定为
.js.erb
,不需要作为
import'../foo.js.erb'
加载。非常感谢@fydelio它帮助我解决了同样的问题!