我正在从使用资产管道迁移到 Rails 5.2 中的 webpacker。我的 AJAX 响应都Uncaught ReferenceError: $ is not defined
在浏览器控制台中导致 rails-ujs.js 错误。
我已经设置了我的 webpacker 环境以包含 jquery。
const { environment } = require('@rails/webpacker');
const webpack = require('webpack');
environment.plugins.append("Provide", new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default']
}));
module.exports = environment;
我在 ../packs/application.js 中导入了 rails-ujs 和 turbolinks
import Rails from 'rails-ujs'
import 'activestorage'
import 'bootstrap'
...
import Turbolinks from "turbolinks"
Rails.start();
Turbolinks.start();
// Import application specific stuff
import 'application/javascripts'
然后我尝试在请求完成后添加一个类。类似于 Rails 指南中显示的内容 https://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns
我的 show.js.erb 文件看起来像这样
$("#result").addClass("active")
我收到一个错误
Uncaught ReferenceError: $ is not defined
at <anonymous>:1:1
at processResponse (rails-ujs.js:282)
at rails-ujs.js:195
at XMLHttpRequest.xhr.onreadystatechange (rails-ujs.js:263)