Javascript 无法调用模块';browserify后的s函数
我正在尝试用JS模块创建一个简单的页面,它将对页面做一些事情。我需要使用node.js的模块,所以我正在学习如何浏览作品 我的HTML:Javascript 无法调用模块';browserify后的s函数,javascript,browserify,require,Javascript,Browserify,Require,我正在尝试用JS模块创建一个简单的页面,它将对页面做一些事情。我需要使用node.js的模块,所以我正在学习如何浏览作品 我的HTML: 你好,世界 var测试=要求(“./test.js”); test.init(); 这是我的JavaScript(test.js): “严格使用”; 警惕(“此处1”); var init=函数(){ 警惕(“此处2”); } exports.init=init 我正在与以下人员进行捆绑: browserify.cmd test.js -o bundle
你好,世界
var测试=要求(“./test.js”);
test.init();
这是我的JavaScript(test.js):
“严格使用”;
警惕(“此处1”);
var init=函数(){
警惕(“此处2”);
}
exports.init=init
我正在与以下人员进行捆绑:
browserify.cmd test.js -o bundle.js
当我试图打开页面时,它显示“here1”,但不显示“here2”。
在浏览器的控制台中,我看到:
Uncaught ReferenceError: require is not defined index.html:9
如何使模块的函数(init)正常工作,您有什么想法吗?您需要将所有包含节点中任何内容的JavaScript代码放入
test.js
文件中,然后使用browserify将其转换为tebundle.js
。在您的示例中,您使用的是index.html
中的节点函数require
,该函数不会被转换。然后浏览器会看到他不知道的函数require()
,这就是隐藏问题的地方
简单地说:所有javascript代码(包含节点)必须作为单个bundle.js
包含在index.html
中,这是源文件的浏览结果
编辑
Browserify(默认情况下)不允许从browserified代码中调用任何browserified函数。但是,您可以通过将函数附加到窗口
范围中使其可用
这是test.js
(然后由browserify转换为bundle.js
)和index.html
“严格使用”;
警惕(“此处1”);
window.init=函数(){
警惕(“此处2”);
}
你好,世界
init();
因为require不是本地js函数,所以应该在test.js中使用它,因为browserify就是用它来捆绑模块的。但是我如何从html/embedded js访问test.js中定义的函数呢?主要问题是我不明白如何访问test.js中定义的函数(当它被browserify时)来自html/embedded js.Aha!在最初的问题中,从嵌入代码调用它的必要性并不明确。我编辑了答案,它可以通过将你的函数附加到窗口范围来实现。