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 に答える