我打算使用webpack2捆绑一些模块。使用通用模块模式(非CommonJS或AMD)编写模块。
// in spUtil.js
var spUtil = (function(){
var sp={};
/* build some helper functions to set up urls and rest queries for sharepoint */
return sp;
})();
// in listcrud.js
var listCrud=(function(){
lc={};
/* build some functions that get data from sharepoint lists */
return lc;
})();
// in util.js
require("exports-loader?spUtil!./spUtil.js");
require("exports-loader?listCrud!./listcrud.js");
var util=(function(spUtil,listCrud){
ut={};
/* build some functions that query data from sharepoint */
return ut;
})($,spUtil,listCrud);
// in myModule.js
var myModule=(function($,util){
my={};
/* build a view of some SP data */
return my;
})($,util);
但是,在webpack尝试加载捆绑包时出现错误;
Uncaught ReferenceError: spUtil is not defined
at Object.$.ajax.url (dashboard.bundle.js:389)
at __webpack_require__ (dashboard.bundle.js:20)
at Object.<anonymous> (dashboard.bundle.js:1076)
at __webpack_require__ (dashboard.bundle.js:20)
at Object.<anonymous> (dashboard.bundle.js:813)
at __webpack_require__ (dashboard.bundle.js:20)
at Object.<anonymous> (dashboard.bundle.js:1729)
at __webpack_require__ (dashboard.bundle.js:20)
at dashboard.bundle.js:66
at dashboard.bundle.js:69
Webpack构建如下内容:
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(2);
__webpack_require__(1);
var util =(function($,spUtil,listCrud){
....
})($,sqUtil,listCrud);
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(0);
var myModule=(function($,util){
var my={};
.....
return my;
})($,util);
其中模块2是spUtil,模块1是listCrud。逐步调试开发工具调试器-spUtil已加载,webpack已“安装” listCrud,此功能称为:
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
如何解决此错误?
最佳答案
我发现我的错误是我缺少一个关键要素。在模块中声明变量以供使用。
var spUtil = require('...spUtil.js');
var listCrud = require('...listcrud.js');