2017-06-07 114 views
0

我打算使用webpack2捆绑一些模块。这些模块使用通用模块模式(不是CommonJS或AMD)编写。Webpack模块RefrenceError模块未定义

// 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。通过开发工具调试器步进 - 通过的WebPack spUtil被加载,listCrud已经“安装”这个函数被调用:

/******/  if(installedModules[moduleId]) { 
/******/   return installedModules[moduleId].exports; 
/******/  } 

我怎样才能解决这个问题?

回答

0

我想通了,我的错误,我缺少一个关键组成部分。在模块中声明变量以供它使用。

var spUtil = require('...spUtil.js'); 
var listCrud = require('...listcrud.js');