如本文所述,可以在Meteor中使用node.js包,但是由于require没有全局定义,具有传递依赖性的包(例如xml2js或aws-lib)会中断
ReferenceError: require is not defined
有关如何在不更改库的情况下修复或解决此问题的任何想法?
我按照您链接问题的说明进行操作.我使用node-xml2js库使用代码库中的测试夹具对其进行测试,并通过以下方式实现.
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');
});
});
});
Run Code Online (Sandbox Code Playgroud)
我认为关键是定义一个变量require并将其分配给Meteor的require函数.当Meteor加载服务器资产时,它还会加载require并解决传递依赖的问题.我没有对node-xml2js库进行任何更改.
希望这可以帮助!