jquery - Rails 6 Asset Pipeline:如何在 application.js 中导入供应商脚本?
问题描述
我正在尝试在我的 application.js 下正确导入供应商 js 文件app/javascript/packs/application.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 应该可以被custom.js
位于的文件访问app/javascript/plugins/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;
我试图在 Ruby Guides 上的资产管道中找到答案。但似乎该教程有点过时了。
解决方案
将新目录添加到 webpacker 的查找文件中。
补充config/webpacker.yml
:
additional_paths: ['your/path']
在这种特定情况下:
additional_paths: ['app/javascript/plugins/']
推荐阅读
- java - JFreeChart HistogramDataset 系列更新
- python - Python Selenium - 获取specc href值
- python - 如何在 google colab 中添加自动完成功能?
- c++ - MinGW 添加 Asio 独立库
- android - 构建失败并出现异常 - 颤振评估根项目“android”时出现问题
- android - Android FLAG_SYSTEM - 它存储在哪里?
- java - 有没有办法使用 intellj 为我的 java 测试使用额外的测试数据库?
- c# - 我似乎无法找到我试图在 c# 中修复的这段代码背后的错误,它使用了几个由主题标签符号分隔的类
- mysql - 使用 Postman 插入数据会导致 MySQL 中的值未定义,使用 Lambda 插入不会(行正常)
- c# - CS1061:“变换”不包含“LocalScale”的定义