4

私はノードから始めています。おそらくばかげた質問で申し訳ありません。

以下のコードがエラーをスローする理由を理解しようとしています: ReferenceError: Promise is not defined

allAccountFixtures: ['account-customer-joe', 'account-partner-sam', 'account-partner-jane', 'account-admin-jill'],
allProductFixtures: ['product-123', 'product-234', 'product-345', 'product-456'],
...
loadBasicFixtures: (Api) => {
    return Promise.all([
      Support.importRecords(Api.accountsAPI, Support.allAccountFixtures),
      Support.importRecords(Api.productsAPI, Support.allProductFixtures)
   ]);
},

私の API は別の場所で次のように定義されています。

this.accountsAPI = app.service('/api/accounts');
this.productsAPI = app.service('/api/products');

インポート機能は次のとおりです。

importRecords: (feathersService, fixtureNames) => {
    // Wrap in an array if there's only one.
    if (!(fixtureNames instanceof Array)) { fixtureNames = [fixtureNames]; }

    // Create a separate promise for each JSON fixture to load the JSON from a
    // file and send it to feathers.create(). Don't execute yet.
    var promises = fixtureNames.map(fixtureName => {
      var filePath = `test/fixtures/json/${fixtureName}.json`;
      // console.log(`-> Loading JSON fixture: ${filePath}`);

      return fs.readFileAsync(filePath, 'utf8')
        .then((jsonString) => {
        return JSON.parse(jsonString);
      }).then((json) => {
        return feathersService.create(json);
      });
    });

    // Wrap all fixture loading promises inside a single outer promise that will
    // fire when all of the child promises are complete.
    return Promise.all(promises);
},

提供された情報が、何が起こっているかを知らせるのに十分かどうかわかりません。私は「約束」の概念を調べましたが、それはほとんどです。正しい方向を指し示すことができるかもしれません。ドキュメントには、解決と拒否が記載されています。

4

2 に答える 2

5

問題が解決したので、コメントを回答にします。

一部の古いバージョンの node.js には promise が組み込まれておらず、それらで promise を使用するには、promise サポートを追加するサード パーティ ライブラリを読み込む必要があります。

node.js の 4.x バージョン以降にアップグレードすると、promise が node.js に組み込まれます。

于 2015-12-05T18:31:14.620 に答える
1

Promiseをインポートしてrequireする必要があります

npm install promise --save

それで

var Promise = require('promise');
于 2015-12-05T16:35:46.050 に答える