4

可以按照此处所述在 Meteor 中使用 node.js 包,但是由于require没有全局定义,具有传递依赖关系的包(例如 xml2js 或 aws-lib)会中断

ReferenceError: require is not defined 关于如何在不更改库的情况下修复或解决此问题的任何想法?

4

2 回答 2

5

我按照您的链接问题中的说明进行操作。我使用 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');
        });
    });
});

我认为关键是定义一个变量require并将其分配给 Meteor 的 require 函数。Meteor 在加载服务器资产的同时,也加载require并解决了传递依赖的问题。我没有对 node-xml2js 库进行任何更改。

希望这可以帮助!

于 2012-08-16T21:20:17.403 回答
3

在最新版本的 Meteor(0.6.3,大概是更高版本)中,您需要使用Npm.require()而不是单独使用require()

于 2013-06-09T06:29:13.460 回答