2

Watson 視覚認識 API を使用して視覚認識アプリをセットアップしようとしています。これを行うために、まず watson-developer-cloud をダウンロードし、index.html と api_request.js の隣にある node_modules フォルダーに配置しました。

これは私の api_request.js ファイルです:

 var watson = require('./node_modules/watson-developer-cloud');

 var visual_recognition = watson.visual_recognition({
   username: '*********',
   password: '*********',
   version: 'v2-beta',
   version_date: '2015-12-02'
 });
 visual_recognition.listClassifiers({},
    function(err, response) {
     if (err){
        console.log(err);
  }
     else {
        console.log(JSON.stringify(response, null, 2));
  }
    }
 );

これは、視覚認識 API のドキュメントから直接取得されます。このファイルをターミナルで実行したところ、視覚認識分類子のリストである目的の出力が提供されました。ただし、node.js 関数があるため、browserify を使用してブラウザーで実行できるようにすることにしました。browserify をインストールし、api_request.js と index.html ファイルと同じディレクトリに api_request.js から bundle.js をビルドしました。

index.html が bundle.js にリンクされたら、それをブラウザーで開きましたが、node.js 関数に問題はありませんでした。

ただし、watson-developer-cloud にあるファイルが watson-developer-cloud 内にある別のファイルを見つけることができなかったときに、エラーが発生しました。具体的に言うと、index.js は v2-beta を見つけることができませんでした (私は watson-developer-cloud ファイルを編集していません)。私が奇妙なことに気付いたのは、ターミナルで api_request.js を実行したときに watson-developer-cloud ファイルに問題がなかったのに、browserify を使用すると、bundle.js が index.js が v2- を見つけられないというエラーをログに記録したことです。ベータ。

"build": "browserify api_request.js -o bundle.js"

^bundle.js のビルドに使用したスクリプトです。このエラーの原因と考えられる唯一のことは、browserify です。これを引き起こしている可能性のあるものは他にありますか?

4

1 に答える 1

2

残念ながら、ほとんどの IBM Watson API は CORS をサポートしていないため、ブラウザーからは使用できません。このため、watson-developer-cloudnpm モジュールは browserify を念頭に置いて作成されておらず、ディスクからいくつかのファイルをプログラムでロードします。Browserify はこれを処理できません。ディスクからロードするファイルを事前に知る必要があります。--require node_modules/watson-developer-cloud/services/visual_recognition/v1.jsおそらくbrowserify コマンドに追加することで回避できますが、最初の問題が残るだけです: CORS サポートなし.

そのため、現在推奨されている解決策は、ブラウザーからの要求を watson サービスに転送するエンドポイントをサーバーに作成することです。追加の手順であることは承知していますが、現在利用できる最良のオプションです。https://github.com/watson-developer-cloud/visual-recognition-nodejsは、この良い例を示しています。

Watson プラットフォームの今後の更新で、全面的に CORS が有効になる可能性があります。その場合は、npm モジュールを更新して、browserify とうまく連携できるようにします。

于 2016-03-15T19:08:32.243 に答える