【发布时间】:2020-07-22 01:05:54
【问题描述】:
我正在尝试在 app/javascript/packs/application.js 下的 application.js 中正确导入供应商 js 文件
这是当前的架构:
可以看到,我选择将供应商js文件放在app/javascrip/plugins/
我已经像这样构建了application.js:
// Rails Internals
require("@rails/ujs").start();
require("turbolinks").start();
require("@rails/activestorage").start();
require("channels");
// Libraries/Vendor-plugins
require("jquery");
import 'bootstrap';
require('../plugins/chosen.min.js');
require('../plugins/magnific-popup.min.js');
require('../plugins/owl.carousel.min.js');
require('../plugins/rangeSlider');
require('../plugins/sticky-kit.min.js');
require('../plugins/masonry.min.js');
require('../plugins/mmenu.min.js');
require('../plugins/tooltips.min.js');
require('../plugins/custom');
// Custom functions
// import { myFunction } from '../components/myScrip';
document.addEventListener('turbolinks:load', () => {
});
通过这样做,jQuery 应该可以通过位于app/javascript/plugins/custom.js 中的custom.js 文件访问,对吧?
为了清楚起见,custom.js 具有以下形状:
(function ($) {
"use strict";
$(document).ready(function () {
// ...
}
})(this.jQuery);
但是当我运行服务器时,找不到 jQuery:
我通过yarn add jquery@3.5.1 bootstrap@3.4.1(供应商需要旧版本)添加了 jQuery 和引导程序。
我的 Webpack enviroment.js 是这样的:
const { environment } = require('@rails/webpacker');
const webpack = require('webpack');
environment.plugins.prepend(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery',
Popper: ['popper.js', 'default']
})
);
module.exports = environment;
我试图在The Asset Pipeline on Ruby Guides. 中找到答案,但该教程似乎有点过时了。
【问题讨论】:
标签: jquery webpack asset-pipeline ruby-on-rails-6