未定义不是构造函数:AWS.Comprehend,aws JavaScript SDK

时间:2018-09-04 10:07:58

标签: amazon-web-services typescript aws-sdk

我正在尝试通过aws JavaScript SDK使用Amazon Comprehend API。但是我总是得到

  

未捕获(承诺):TypeError:undefined不是构造函数   (评估“新的AWS.Comprehend ...

'我做错了什么?非常感谢。

所有其他服务,例如Polly和Rekognition运作良好。

 import * as AWS from 'aws-sdk';

 ....

 getTextAnalysis(textToAnalyze) {

   let awsCredentials = new AWS.Credentials("XXXXXXXXXXX", "XXXXXXXXX");
   let settings = {
       awsCredentials: awsCredentials,
       awsRegion: "us-west-2"
   }

   AWS.config.credentials = settings.awsCredentials;
   AWS.config.region = settings.awsRegion;

   let sentimentAnalysis = new Promise(function (successCallback, errorCallback) {
     var comprehend = new AWS.Comprehend({apiVersion: '2017-11-27'});
     var params = {
          LanguageCode: 'en',
          Text: textToAnalyze
        }

     comprehend.detectSentiment(params, function (error, data) {
         if (error) {
             errorCallback(error)
         } else {
             console.log('comprehend: ' + JSON.stringify(data))
             successCallback(data)
         }
     });

 });

 return sentimentAnalysis;

 }

1 个答案:

答案 0 :(得分:1)

我刚遇到这个问题。我假设您现在已经解决了该问题,但仅针对公共论坛...

根据其中一名贡献者(https://github.com/aws/aws-sdk-js/issues/2417#issuecomment-446001911),Comprehend和Comprehend Medical未导出到主SDK捆绑包中。您必须像这样直接导入它:

import Comprehend from 'aws-sdk/clients/comprehend';

const comprehend = new Comprehend();

或对于commonjs

const Comprehend = require('aws-sdk/clients/comprehend');

var comprehend = new Comprehend();