我打算使用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');

10-08 06:45
查看更多