我有一个es6 js文件,用作库。正如你所看到的,js文件依赖于jquery。我正在使用Webpack。ES6代码不适用于jQuery
在JS文件中,我在下面的行中导致了我在下面复制的最终es5代码中的_interopRequireWildcard。由于jquery不是esModule,在评估条件obj && obj.__esModule
后,jQuery函数被复制到一个Object中。我也用打字机来使用这段代码。它适用于Typescript,但与es6失败。
ES6代码片段
import * as $ from 'jquery';
let setupObject = function setupObject(element) {
let aButton = $(dropdownButtonSelector); //Fail's here with error
//Uncaught TypeError: $ is not a function
}
exports default setupObject;
Transpiled ES5代码
Object.defineProperty(exports, "__esModule", {
value: true
});
var _jquery = __webpack_require__(1);
var $ = _interopRequireWildcard(_jquery);
function _interopRequireWildcard(obj) {
if (obj && obj.__esModule) { //obj.__esModule = undefined for jquery
return obj;
} else {
var newObj = {};
if (obj != null) {
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key))
newObj[key] = obj[key];
}
}
newObj.default = obj;
return newObj;
}
}
var setupObject = function setupObject(element) {
var aButton = $(dropdownButtonSelector); //Fail's here with error
//Uncaught TypeError: $ is not a function
}
exports.default = setupObject;
试试'从'jquery'导入$;' – nils
有什么区别? – randominstanceOfLivingThing
它只针对默认导出,它被转换为commonJS作为'module.exports'(假设你的jQuery版本具有commonJS的钩子)。它工作吗? – nils