Browserify(-shim)高斯统计库

时间:2014-07-23 23:09:56

标签: browserify browserify-shim

我很难在浏览器化环境中使用高斯统计库(可作为npm模块使用)。

我正在使用

"devDependencies": {
  "browserify": "4.2.3",
  "gauss": "0.2.12"
}

以及以下简单的输入脚本:

// app.js

var gauss = require('gauss');

var v = new gauss.Vector([1, 2, 3]);

console.log('It works: ' + v);

当我browserify这个并在浏览器中加载生成的包时,我收到TypeError: object is not a function错误,而在节点中,一切都按预期工作。

我想这个问题与库如何试图暴露自己有关,因为当我手动添加类似

之类的东西时它会起作用
if (window.gauss) {
  module.exports = window.gauss;
}

gauss的主文件。

我尝试了各种browserify-shim配置,所有这些都导致了不同的错误。

这里有一个sample project来玩。

任何人都可以提出一个不涉及手动修补的解决方案吗?

修改:更多信息

当我尝试拨打new gauss.Vector()时会抛出异常。 gauss.Vector已定义,但不是函数。

如果我将app.js更改为

var gauss = require('gauss');
console.log(gauss);

然后在节点中,我得到了

{ version: '0.2.12',
  Collection: [Function],
  Vector: [Function],
  TimeSeries: [Function] }

正如所料。但是,在浏览器中,会记录此信息(请注意VectorObject):

Object {version: "0.2.12", Collection: Object, Vector: Object, TimeSeries: Object}

如上所述,我怀疑罪魁祸首是conditionally exposes图书馆的一些代码,但我真的不知道如何解决这个问题。

一个简单的browserify-shim配置,如

"browser": {
  "gauss": "./node_modules/gauss/index.js"
},
"browserify-shim": {
  "gauss": { "exports": "gauss" }
},

在节点和浏览器中都生成Error: Cannot find module './lib/gauss' ./lib/gauss中需要gauss/index.js

0 个答案:

没有答案