JS,Browserify:函数未定义

时间:2017-08-23 07:55:41

标签: javascript node.js browser module browserify

我有代表的文件:

-js/
    - calc.js
    - tool.js
-index.html

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

module.exports = {
   calculate: function() {...},
   getPrecision: function() {...}
}

和tool.js使用require并添加一些函数,例如:

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

function changeState() {
//some code using fpcalc
}

我使用Browserify生成bundle.js并将其添加为脚本src。 HTML页面上的一个按钮是使用onclick=changeState()。点击我的

后点击
ReferenceError: changeState is not defined
at HTMLAnchorElement.onclick

为什么?有没有其他方法可以使它工作?

3 个答案:

答案 0 :(得分:4)

函数“changeState”不会在tool.js中导出。 这意味着它只能在你的bundle.js中看到,但不能在外面看到。

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

它向您展示了如何在javascript中将代码公开给全局命名空间。

答案 1 :(得分:1)

这里有一种非常简单的方法可以让它如你所愿。

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

window.changeState = () => {
    //some code using fpcalc
}

答案 2 :(得分:0)

我有同样的错误,这是我的工作示例。

mac,browserify https://github.com/perliedman/reproject

            1) must use sudo install globally
                sudo npm install -g brwoserify

                 https://github.com/perliedman/reproject
                 sudo npm install reproject    // install locally is fine

                 must manually create 'dist' folder for later output file use

              2) must use --s expose global variable function 'reproject' and or 'toWgs84' you will use later in browser js.
                    without --s , will get 'reproject' undefined error . https://makerlog.org/posts/creating-js-library-builds-with-browserify-and-other-npm-modules
                    browserify --help will list all options.  -o means output file directory

                 browserify node_modules/reproject/index.js --s reproject -o node_modules/reproject/dist/reproject.js

html脚本标记包括上面的dist / reproject.js

现在,您将不会收到“ reproejct”未定义错误

         return reproject(_geometry_, ___from_projection, proj4.WGS84, crss)