为什么从webpack编译后Javascript函数没有定义?
您好,我使用webpack将我的不同模块加载到一个bundle.js文件中,该文件中的不同功能在html中未定义,但如果在我的输入文件中调用相同的功能,则会工作或生成winndow.fnName 这是我的密码 Test.js为什么从webpack编译后Javascript函数没有定义?,javascript,module,scope,webpack,Javascript,Module,Scope,Webpack,您好,我使用webpack将我的不同模块加载到一个bundle.js文件中,该文件中的不同功能在html中未定义,但如果在我的输入文件中调用相同的功能,则会工作或生成winndow.fnName 这是我的密码 Test.js var test=function(msg){ console.log(msg)} module.exports=test; lib.js var lib=function(msg){console.log(msg)} module.exports=lib; 整个JS
var test=function(msg){
console.log(msg)}
module.exports=test;
lib.js
var lib=function(msg){console.log(msg)}
module.exports=lib;
整个JS
var lib=require('./lib.js');
var test=require('./test.js');
index.html
test("test called");
lib("lib also called");
在webpack创建的输出文件中,整个JS的代码如下所示:
/*****/
/* 0 */
/*****/ function(module, exports, __webpack_require__) {
'use strict';
var lib = __webpack_require__(1); // require('./lib.js')
var test = __webpack_require__(2); // require('./test.js');
/*****/ },
由于变量lib
和test
是在函数中定义的,所以它们不会分配给窗口对象
通过执行以下操作,您可以解决将lib
和test
导出到窗口对象的问题(我是基于您希望在html文件中使用此变量而做出此假设的):
var lib = require('./lib.js');
var test = require('./test.js');
window.lib = lib;
window.test = test;
*如果我在entry.js文件中调用相同的函数,他们正在工作,或者将函数添加到winndow.fnName.be composit并确定是
Test.js
还是Test.js
使用window.lib公开我的实现不是一个坏做法吗?在html文件中使用js函数是一个坏做法-我只会让你的代码工作,而不是完美的。谢谢,你们知道如何使我的实现抽象吗?若你们必须在纯HTML中使用这个函数,除了将它分配给窗口对象之外,你们并没有其他选择。也许您不知道,如果您创建var test=function(){}
在全局js文件中,您的测试
变量将自动分配给窗口。测试
。