Javascript 无法使用Web包构建jQuery ui
我无法使用webpack在项目中成功包含jQuery UI。jQuery一直在工作,但当我访问需要jQuery UI的应用程序页面时,我收到以下警告: 延迟异常:$(…).DragTable不是函数类型错误:$(…).DragTable不是函数 和错误: jquery.js:4055未捕获类型错误:$(…)。Dragable不是函数 我几乎不熟悉使用webpack/node构建javascript代码,所以很可能我犯了一个幼稚的错误 这是我的配置文件: config.jsJavascript 无法使用Web包构建jQuery ui,javascript,node.js,jquery-ui,webpack,Javascript,Node.js,Jquery Ui,Webpack,我无法使用webpack在项目中成功包含jQuery UI。jQuery一直在工作,但当我访问需要jQuery UI的应用程序页面时,我收到以下警告: 延迟异常:$(…).DragTable不是函数类型错误:$(…).DragTable不是函数 和错误: jquery.js:4055未捕获类型错误:$(…)。Dragable不是函数 我几乎不熟悉使用webpack/node构建javascript代码,所以很可能我犯了一个幼稚的错误 这是我的配置文件: config.js const MiniC
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/js/index.js',
mode: 'development',
output: {
filename: 'index.js',
path: 'path/js',
},
module: {
rules: [
{
test: /\.(scss)$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'sass-loader'
]
},
{
test: /\.js$/,
enforce: 'pre',
use: ['source-map-loader'],
},
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '../css/index.css',
}),
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery',
})
],
resolve : {
alias: {
// bind version of jquery-ui
"jquery-ui": "jquery-ui/jquery-ui.js",
// bind to modules;
modules: path.join(__dirname, "node_modules"),
}
},
}
import '../sass/index.scss';
const $ = require("jquery");
require('webpack-jquery-ui');
require('webpack-jquery-ui/draggable');
global.$ = global.jQuery = $;
import 'bootstrap';
我的入口点:
index.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/js/index.js',
mode: 'development',
output: {
filename: 'index.js',
path: 'path/js',
},
module: {
rules: [
{
test: /\.(scss)$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'sass-loader'
]
},
{
test: /\.js$/,
enforce: 'pre',
use: ['source-map-loader'],
},
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '../css/index.css',
}),
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery',
})
],
resolve : {
alias: {
// bind version of jquery-ui
"jquery-ui": "jquery-ui/jquery-ui.js",
// bind to modules;
modules: path.join(__dirname, "node_modules"),
}
},
}
import '../sass/index.scss';
const $ = require("jquery");
require('webpack-jquery-ui');
require('webpack-jquery-ui/draggable');
global.$ = global.jQuery = $;
import 'bootstrap';
每次进行更改时,我都会运行以下命令:
npx网页包--config.js
此操作没有错误输出
我哪里做错了
更新
根据Chris G在评论中的建议,我尝试了以下方法:
import '../sass/index.scss';
const $ = require('webpack-jquery-ui');
global.$ = global.jQuery = $;
import 'bootstrap';
重建后,控制台中出现一系列错误,例如:
ERROR in (webpack)-jquery-ui/index.js
Module not found: Error: Can't resolve 'jquery-
ui/themes/base/autocomplete.css' in
'.../webpack/node_modules/webpack-jquery-ui'
@ (webpack)-jquery-ui/index.js 57:0-49
@ ./src/js/index.js
这是运行“npm安装--保存jquery jquery ui”时返回的结果
npm WARN saveError ENOUNT:没有这样的文件或目录,请打开“…/webpack/package.json”
npm WARN ENOINT ENOINT:没有这样的文件或目录,请打开“…/webpack/package.json”
npm警告网页包无说明
npm警告网页包无存储库字段。
npm警告网页没有自述文件数据
npm警告网页包无许可证字段
这可能是安装问题吗?据我所知,您需要做以下几件事:
- 您只需安装
webpackjqueryui
- 我认为您现在不应该在
中解析正确的webpack.config.js
,只需删除jqueryui
的别名即可“jqueryui”
解析:{
别名:{
//绑定到模块;
modules:path.join(\uuu dirname,“node\u modules”),
}
},
- 最后,我认为
不会为您导出webpack jquery ui
对象,因此不再在全局中分配和导出它,因为它当前在您的模块中可用jquery
。因此,只需简单地写如下:ProvidePlugin
import'../sass/index.scss';
要求('webpack-jquery-ui');
要求('webpack-jquery-ui/draggable');
//通过“ProvidePlugin”在模块中提供$`
全局。$=global.jQuery=$;
导入“引导”;
根据您的建议,您不需要包含jquery
,因为网页jquery ui
已经包含了这两个部分。谢谢@ChrisG-我根据您的建议进行了调整,并更新了问题以解释发生了什么。在努力重新构建代码时,我一定是弄错了。谢谢-在采取行动之后,我得到了一长串错误,这些错误对于jquery ui的不同部分都非常相似:./node_modules/jquery ui/themes/base/accordion.css 11:0模块解析失败:意外令牌(11:0)您可能需要一个合适的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。请参阅|*/>.ui accordion.ui accordion header{显示:block;|光标:pointer;@(网页包)-jquery ui/index.js 56:0-46@./src/js/index.js它看起来像是自动导入css,但您忘记了处理此文件。只需通过更改为test://\(scss)尝试为css加载程序添加css
文件即可$/,
Boom!你解决了这个问题:D非常感谢。我想在使用webpack构建代码的几周内,这些错误会更有意义。