我正在构建一个Meteor应用程序,我正在使用jStat库。使用Meteor 1.3,我对导入有一些奇怪的麻烦。
当我使用import { jStat } from jStat
时,我的测试正在传递并且正确加载了jStat。但它在生产中不起作用,jStat对象未定义。
当我使用import 'jStat'
语法时,情况恰恰相反......在我的测试中,jStat未定义,但在我的模板中定义。
修改:我确实安装了meteor-node-stubs
,但没有改变任何内容。
我也试过了import * as jStat from jStat
,但它只有import jStat from jStat
的效果。
它似乎是一个与jStat本身相关的问题,它有一种奇怪的加载行为(https://github.com/jstat/jstat#module-loaders)。
以下是我的文件:
/imports/math/rates.js
import { jStat } from 'jStat';
/**
* Confidence interval calculation on proportions
* @return {[type]} [description]
*/
export const Rates = function(){
var self = this;
self.ualpha = function(alpha){
var mean = 0;
var std =1;
return jStat.normal.inv(1-alpha/2,0,1);
};
return self;
}();
/imports/math/rates.tests.js (rates.js的测试文件)
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { Events } from '/collections/events.js';
import { Stubs } from '/imports/testing/stubs.js';
import { TestHelpers } from '/imports/testing/helpers.js';
import { assert } from 'chai';
import { Rates } from '/imports/math/rates.js';
describe('Rates Helpers', () => {
beforeEach(()=>{
});
it("Should compute ualpha",()=>{
var eps = 10e-7;
assert.approximately(1.959964,Rates.ualpha(0.05),eps);
assert.approximately(1.644854, Rates.ualpha(0.1),eps);
assert.approximately(2.575829, Rates.ualpha(0.01),eps);
});
});
/client/rates/ui/pages/experiment.js (模板)
import { Template } from 'meteor/templating';
import { Rates } from '/imports/math/rates.js';
import 'meteor/manuel:viewmodel';
Template.rates_experiment.viewmodel({
alpha:0.01,
rate: 0.5,
precision: 0.01,
interval:'constant',
nIdeal : function(){
var self = this;
return Rates.nIdeal(self.rate, self.alpha, 'constant',self.precision);
}
});
是否有人对导入存在同样的问题?