gpt4 book ai didi

javascript - 使用 webpack、gulp 和 typescript 加载 jQuery 插件

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:13 24 4
gpt4 key购买 nike

我似乎无法找出加载相互依赖的第三方库的正确方法。我使用 TypeScript 和 Gulp 以及 Webpack 或 SystemJS 作为我的模块加载器,在这种情况下,两者都有类似的错误。如果我只使用 jQuery,我的应用程序代码就可以工作,但如果我尝试使用 jQuery 插件(例如 jQuery Validation),我会从 Webpack 和 SystemJS 中收到类似的错误,即 jQuery 未定义。

这两种设置都有很多配置,我将在这里演示我最近在 Webpack 上的尝试:

我的main.ts文件:

import * as $ from "jquery";
// if I comment out these two imports, the '$("body").css...' line works
import "../bower_components/jquery-validation/dist/jquery.validate";
import "../bower_components/jquery-validation-unobtrusive/jquery.validate.unobtrusive";

$("body").css("color", "red");

用于生成输出的 gulpfile:

var gulp = require('gulp'),
webpack = require("gulp-webpack");

gulp.task("tsc-webpack", function () {
return gulp.src("app/main.ts")
.pipe(webpack({
output: {
filename: "main.js"
},
module: {
loaders: [
{ test: /\.tsx?$/, loader: "ts-loader" }
]
}
}))
.pipe(gulp.dest(appDir + "js"))
});

我的 tsconfig.json 文件:

{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"module": "commonjs"
},
"exclude": [
"node_modules"
]
}

这是我从 Chrome 开发者控制台收到的错误

Uncaught ReferenceError: jQuery is not defined
at Object.<anonymous> (main.js:12312)
at __webpack_require__ (main.js:20)
at Object.<anonymous> (main.js:51)
at __webpack_require__ (main.js:20)
at Object.defineProperty.value (main.js:40)
at main.js:43

这是生成的文件中引发错误的 block (在最后一行)

(function ($) {
var $jQval = $.validator,
// ...
$(function () {
$jQval.unobtrusive.parse(document);
});
}(jQuery));

最佳答案

通常对于 webpack 中的 jquery 我使用:

module: {                                
rules: [
{ test: require.resolve('jquery'), loader: 'expose-loader?$!expose-loader?jQuery' },
]
},
plugins: [
new webpack.ProvidePlugin({
'$': 'jquery',
'jQuery': 'jquery',
'window.jQuery': 'jquery'
}),
]

Webpack 应该能够识别 amd/commonjs,并且 jquery-validation 看起来像是检查 define

这里有更多关于匀场的信息:https://webpack.js.org/guides/shimming/

关于javascript - 使用 webpack、gulp 和 typescript 加载 jQuery 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43785212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com