JS,Browserify:功能未定义

ann*_*ina 3 javascript browser module node.js browserify

我有代表的文件:

-js/
    - calc.js
    - tool.js
-index.html
Run Code Online (Sandbox Code Playgroud)

calc.js是具有以下结构的节点模块:

module.exports = {
   calculate: function() {...},
   getPrecision: function() {...}
}
Run Code Online (Sandbox Code Playgroud)

和tool.js使用require并添加了一些功能,例如:

const fpcalc = require('./fpcalc');

function changeState() {
//some code using fpcalc
}
Run Code Online (Sandbox Code Playgroud)

我使用Browserify生成bundle.js并将其添加为脚本src。我在HTML页面上的按钮之一是使用onclick=changeState()。单击后,我得到

ReferenceError: changeState is not defined
at HTMLAnchorElement.onclick
Run Code Online (Sandbox Code Playgroud)

这是为什么?还有其他方法可以使它起作用吗?

小智 7

函数“ changeState”未导出到您的tool.js中。这意味着它仅在bundle.js内部可见,而在外部则不可见。

看看这个:https : //makerlog.org/posts/creating-js-library-builds-with-browserify-and-other-npm-modules

它显示了如何将代码公开到javascript中的全局名称空间。