0

元の質問 -- 修正済み (下記参照)

私は流星を初めて使用し、Ian Serlin ( https://github.com/ianserlin/meteor-balanced-payments ) による meteor-balanced-payments パッケージを使用しようとしています。パッケージは適切にインストールされているように見えますが、パッケージを適切にロードして使用を開始するだけで、クライアント側とサーバー側の両方で問題が発生しています。誰かが持っている場合は、完全な実行例を使用できます。

クライアント側は、meteor-balanced-payments が使用を推奨している session-extras パッケージの後に、underscore 組み込みパッケージがロードされているように見えます。Meteor.settings.public.balanced.marketplaceUriフォームのテスト マーケットプレイス Uri 文字列に正しく設定されていることに注意してください/v1/marketplaces/TEST-########################。クライアントの初期化コードは次のとおりです。

[クライアント/main.js]:

Meteor.startup(function() {
  Session.whenTrue("balancedLoaded", function() {
    balanced.init(Meteor.settings.public.balanced.marketplaceUri);      
  });
});

実行すると、Chrome JavaScript コンソールに次のエラーが表示されます。session-extras.js の最初の行は です"_.extend(Session,{"。これは、問題が最初の"_"アンダースコアの使用であることを意味します。何をすべきか提案はありますか?パッケージは依存関係を明示的にしませんか? 修正するために何をすべきかわかりません。

Uncaught ReferenceError: _ is not defined session-extras.js:1
Uncaught TypeError: Object [object Object] has no method 'whenTrue'

2 つ目の問題は、サーバー側が nbalanced が存在しないと主張して失敗することです。サーバーのコードと対応するコンソール エラーは次のとおりです。これは、meteor-balanced-payments パッケージのドキュメントで推奨されている方法のようです。nbalanced は、パッケージの一部としてビルドされる Npm 依存関係としてスマート パッケージに含まれています。nbalanced定義されていない理由はありますか?

[サーバー/bootstrap.js]:

Meteor.startup(function () {
  balanced = new nbalanced({
    secret: Meteor.settings.balanced.apiSecret,
    marketplace_uri: Meteor.settings.balanced.marketplaceUri
  });
});

コンソール出力:

2042-01:58:33.453(-4)? (STDERR) /Users/foo/test-payments4/.meteor/local/build/programs/server/boot.js:185
W2042-01:58:33.454(-4)? (STDERR) }).run();
W2042-01:58:33.454(-4)? (STDERR)    ^
W2042-01:58:33.456(-4)? (STDERR) ReferenceError: nbalanced is not defined
W2042-01:58:33.457(-4)? (STDERR)     at app/server/bootstrap.js:12:18
W2042-01:58:33.457(-4)? (STDERR)     at /Users/foo/test-payments4/.meteor/local/build/programs/server/boot.js:158:61
W2042-01:58:33.457(-4)? (STDERR)     at Array.forEach (native)
W2042-01:58:33.457(-4)? (STDERR)     at Function._.each._.forEach (/Users/foo/.meteor/tools/a80b2d5689/lib/node_modules/underscore/underscore.js:79:11)
W2042-01:58:33.458(-4)? (STDERR)     at /Users/foo/test-payments4/.meteor/local/build/programs/server/boot.js:158:5
=> Exited with code: 8

その他の関連ファイル ...

[スマート.json]:

{
  "packages": {
        "balanced-payments": {},
        "session-extras": {},
        "sync-methods": {}
  }
}

[スマートロック]:

{
  "meteor": {},
  "dependencies": {
    "basePackages": {
      "balanced-payments": {},
      "session-extras": {},
      "sync-methods": {}
    },
    "packages": {
      "balanced-payments": {
        "git": "https://github.com/ianserlin/meteor-balanced-payments.git",
        "tag": "v0.1.1",
        "commit": "6ebc8f9855f35c040b67f0d9bebf16870160c1b2"
      },
      "session-extras": {
        "git": "https://github.com/belisarius222/meteor-session-extras.git",
        "tag": "v0.3.0",
        "commit": "0c49d41009821e76f46af3ad65d0a1d5bfa8d4eb"
      },
      "sync-methods": {
        "git": "https://github.com/ianserlin/meteor-sync-methods.git",
        "tag": "v0.1.1",
        "commit": "2a7b094d54f3fb7c9acebbe10b68f9db1e5f156b"
      }
    }
  }
}

関連するバージョン番号:

$ uname -a
Darwin mini-en0.home 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64

$ node --version
v0.10.19

$ mrt --version
Meteorite version 0.6.14

解決

問題は、これらのパッケージ (balanced-payments と session-extras) の両方が 0.6.5 名前空間の変更に対して更新されていないことです。パッケージを機能させるために、パッケージのローカル コピーに次の変更を加えました。今ではきれいに動作します。

[balanced-payments/package.js]: サーバーが使用できるように、api.export() で nbalanced シンボルをエクスポートする必要があります ...

Package.describe({
    summary: 'Balanced Payments (nbalanced packaged for meteor)'
});

Npm.depends({
    'nbalanced': 'https://github.com/ianserlin/nbalanced/tarball/05eb18cf3536e22b62f349d0520e5df23740dd5c'
});

Package.on_use(function (api) {
    api.use('sync-methods', 'server');

    api.add_files('index.js', 'server');
    api.add_files('balanced.js', 'client');

    api.export('nbalanced', 'server');
});

[session-extras/package.js]: セッションを拡張できるように、api.use() を介してアンダースコアとセッションをインポートする必要があります ...

Package.describe({
    summary: "a few useful helpers for Meteor's Session"
});

Package.on_use(function (api) {
    api.use('underscore', 'client');
    api.use('session', 'client');

    api.add_files([
        'session-extras.js'
    ],'client');
});
4

0 に答える 0