Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么从webpack编译后Javascript函数没有定义?_Javascript_Module_Scope_Webpack - Fatal编程技术网

为什么从webpack编译后Javascript函数没有定义?

为什么从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

您好,我使用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 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文件中,您的
测试
变量将自动分配给
窗口。测试