沃森视觉识别运行错误

我正在尝试使用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文档中获取。 我在terminal运行这个文件,它提供了所需的输出,这是一个视觉识别分类器的列表。 然而,因为它有node.jsfunction,我决定使用browserify来允许它在浏览器中运行。 我在api_request.js和index.html文件的同一目录中安装了browserify,并将api_request.js中的bundle.js构build出来。

一旦index.html链接到bundle.js,我在浏览器中打开它,并没有任何与node.js函数有关的问题。

但是,当watson-developer-cloud中的文件找不到watson-developer-cloud中的另一个文件时发生错误。 具体index.js找不到v2-beta(我没有编辑watson-developer-cloud文件)。 我觉得奇怪的是,当我在terminal中运行api_request.js时,没有一个watson-developer-cloud文件有任何问题,但是一旦我使用了browserify,bundle.jslogging了index.js无法find的错误。公测。

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

^这是我用来构buildbundle.js的脚本。 我能想到的唯一可能导致这个错误是browserify。 还有什么可能导致这个?

不幸的是,大多数IBM Watson API不支持CORS,因此无法在浏览器中使用。 由于这个事实, watson-developer-cloud npm模块并没有使用browserify编写,而是以编程方式从磁盘加载一些文件。 Browserify无法处理 – 它必须知道哪些文件要提前从磁盘加载。 您可能可以通过在您的--require node_modules/watson-developer-cloud/services/visual_recognition/v1.js添加--require node_modules/watson-developer-cloud/services/visual_recognition/v1.js来解决这个问题,但这只会给您带来第一个问题:无CORS支持。

所以,所有这一切,目前推荐的解决scheme是在您的服务器中创build一个端点,将请求从浏览器转发到watson服务。 我知道这是一个额外的步骤,但现在是最好的select。 https://github.com/watson-developer-cloud/visual-recognition-nodejs显示了一个很好的例子。

Watson平台的未来更新可能会使CORS全面实现,如果发生这种情况,我们将确保更新npm模块,以便与browserify进行良好的配合。