Posted at

webpackerを使ったrailsアプリを実行するとき、TypeError: environment.plugins.set is not a functionというエラーが出る

More than 1 year has passed since last update.


環境


  • Rails 5.1.5

  • webpacker 3.3.0


現象

Compilation failed:

remote: /tmp/build_074ca0ee678491d6f72035c60cc5f616/config/webpack/environment.js:5
remote: environment.plugins.set('Provide',
remote: ^
remote: TypeError: environment.plugins.set is not a function
remote: at Object.<anonymous> (/tmp/build_074ca0ee678491d6f72035c60cc5f616/config/webpack/environment.js:5:21)
remote: at Module._compile (module.js:643:30)


対策

setではなくappendprependを使う。webpacker 3.3.0でsetがremoveされたため。



Before


config/webpack/environment.js

environment.plugins.set('Provide',

new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
)


After


config/webpack/environment.js

environment.plugins.prepend('Provide',

new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
)


参考

https://github.com/rails/webpacker/issues/1318 https://github.com/rails/webpacker/blob/master/CHANGELOG.md#330---2018-03-03

http://more-caffeine.hatenablog.com/entry/2018/03/05/142450

https://stackoverflow.com/questions/49107725/i-got-webpacker-error-when-running-the-rails-app-typeerror-environment-plugin