可以将Meteor中的node.js包用作described here,但由于require
未全局定义,因此具有传递依赖性的包(例如xml2js或aws-lib)会与< / p>
ReferenceError: require is not defined
有关如何修改或解决此问题而不改变库的任何想法?
答案 0 :(得分:5)
我按照linked question的说明操作。我使用node-xml2js库来使用test fixture from the code base对其进行测试,并通过以下方式实现。
Meteor.startup(function () {
// This solves the issue
var require = __meteor_bootstrap__.require;
// The example from node-xml2js readme
var fs = require('fs'),
xml2js = require('xml2js');
var parser = new xml2js.Parser();
fs.readFile('/home/prashant/order.xml', 'utf8', function(err, data) {
parser.parseString(data, function (err, result) {
console.log(result);
console.log('Done');
});
});
});
我认为关键是定义变量require
并将其分配给Meteor的require函数。当Meteor加载服务器资产时,它还会加载require
并解决传递依赖的问题。我没有对node-xml2js库进行任何更改。
希望这有帮助!
答案 1 :(得分:3)
在Meteor的最新版本(0.6.3,可能是以后版本)中,您需要使用Npm.require()
代替require()
。