Javascript 如何将jQuery导入Angular 2+;中的jQuery插件网页包/CLI
我正在尝试将jQuery插件导入到单个Angle组件中。它可以在其他浏览器中运行,但IE 11会阻塞它:Javascript 如何将jQuery导入Angular 2+;中的jQuery插件网页包/CLI,javascript,jquery,angular,webpack,angular-cli,Javascript,Jquery,Angular,Webpack,Angular Cli,我正在尝试将jQuery插件导入到单个Angle组件中。它可以在其他浏览器中运行,但IE 11会阻塞它: SCRIPT1002: Syntax error main.bundle.js (1376,1) 当我单击错误时,它会显示有问题的行: eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_
SCRIPT1002: Syntax error
main.bundle.js (1376,1)
当我单击错误时,它会显示有问题的行:
eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(\"../../../../jquery/dist/jquery.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_core__ = __webpack_require__(\"../../../core/esm5/core.js\");\n// require('jquery');\n\n\n\n/*\ndjaodjin-annotate.js...
这还不是全部,但似乎与导入jQuery有关,事实上,当我删除jQuery导入时,它运行良好
问题可能是我正在将jQuery导入一个JavaScript(.js)文件,这是一个jQuery插件。以下是它的简化版本:
import * as jQuery from 'jquery';
(function($) {
'use strict';
function Annotate(el, options) {
this.init();
}
Annotate.prototype = {
init: function() {
console.log('It\'s working.');
},
};
$.fn['annotate'] = function() {
const annotate = new Annotate($(this));
return annotate;
};
})(jQuery);
如果我不能将jQuery导入到jQuery插件中,我如何使用jQuery插件?有办法解决这个问题吗
顺便说一句,我只在一个组件中使用jQuery。应用程序的其余部分都是干净的。我想说,您不需要在插件中导入jQuery;您的插件应该假设jquery已经包含在内,如果没有,则会失败 您可以将jquery(首先)然后插件文件包含到项目中。然后在组件中声明jquery
declare let $ : any;
并实例化您的插件,如
$('div').annotate();
我实际上发现我的jQuery插件有错误。它有几行ES6语法,IE不喜欢。但当Webpack编译它时,它会将整个内容转换成一个字符串,全部在一行中。在运行时,它会对字符串运行
eval()
。因此,您不会收到带有行号的有价值的错误消息。它只是给了你我犯的愚蠢的错误。但我认为大卫有一个很好的观点。我们可能不需要导入jQuery