2017-06-07 29 views
0

私はcognitoを使用してユーザーを登録しようとしています。私はプールとアプリをセットアップして、プールIDとクライアントIDを取得しました。 TypeError:未定義の 'CognitoUserPool'プロパティを読み取れません

var AWS = require('aws-sdk'); // Tried 'aws-sdk/dist/aws-sdk' too 
    var AWSCognito = require('amazon-cognito-identity-js'); // Tried var cognito = ... too 
    var CognitoUserPool = AWSCognito.CognitoUserPool; 
    exports.handler = function(event, context, callback) { 
    registerUset(); 
    callback(null, "some success message"); 
} 
var registerUset= function(){ 

var poolData = { 
    UserPoolId : 'xxxxxxxxxxxx', // Your user pool id here 
    ClientId : 'xxxxxxx' // Your client id here 
}; console.log("YEEEEEEEEEEEEEEEEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"); 
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 
var attributeList = []; 
var dataEmail = { 
    Name : 'email', 
    Value : '[email protected]' 
}; 
var dataPhoneNumber = { 
    Name : 'phone_number', 
    Value : '55555555' 
}; 
var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail); 
var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber); 

attributeList.push(attributeEmail); 
attributeList.push(attributePhoneNumber); 

userPool.signUp('username', 'password', attributeList, null, function(err, result){ 
    if (err) { 
     alert(err); 
     return; 
    } 
    cognitoUser = result.user; 
    console.log('user name is ' + cognitoUser.getUsername()); 
    console.log(cognitoUser); 
}); 
    } 

私がアップロードし、ラムダテストコンソールで上記のコードを実行

が、私は次のエラーを取得する次のコードを持っている

START RequestId: 40f2d39f-4b97-11e7-a9c0-ef84b50cec07 Version: $LATEST 
2017-06-07T15:37:50.315Z 40f2d39f-4b97-11e7-a9c0-ef84b50cec07  
    YEEEEEEEEEEEEEEEEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSS 
2017-06-07T15:37:50.414Z 40f2d39f-4b97-11e7-a9c0-ef84b50cec07 TypeError: 
    Cannot read property 'CognitoUserPool' of undefined 
    at registerUset (/var/task/index.js:24:65) 
    at exports.handler (/var/task/index.js:8:5) 
    END RequestId: 40f2d39f-4b97-11e7-a9c0-ef84b50cec07 
    REPORT RequestId: 40f2d39f-4b97-11e7-a9c0-ef84b50cec07 Duration: 3621.75 ms  
    Billed Duration: 3700 ms  Memory Size: 128 MB Max Memory Used: 31 MB 
    RequestId: 40f2d39f-4b97-11e7-a9c0-ef84b50cec07 Process exited before 
    completing request 

それは未定義の「CognitoUserPool」プロパティを読み取ることができませんと言うています。つまり、CognitoIdentityServiceProviderは不思議ですが未定義です。 は、私の知る限り見るように、私は何が不足していないですし、また、私はコード例については、以下のリンクをたどってセットアップ:インストールとパッケージのhttps://github.com/aws/amazon-cognito-identity-js

私は

> > npm install --save amazon-cognito-identity-js 

を使用しても私はaws-インストールsdk。なぜ私は上記のエラーを取得しているか分からない。誰も助けることができますか?

更新:

私は自分のコードの初めに次のように追加しました:

AWSCognito.config.region = 'us-east-1';

と私はので、私はAWSCognitoが未定義だと思う

TypeError: Cannot set property 'region' of undefined

を取得します。

更新:webpackを使用して、javascriptの古いバージョンと互換性があるようにコードを変換し、代わりにimportを使用するように提案しました。だからここに私のコードをな形質転換し、それを実行した後、私のwebpack.config.js

var path = require("path"); 

var DIST_DIR = path.resolve(__dirname, "dist"); 
module.exports = { 
// Example setup for your project: 
// The entry module that requires or imports the rest of your project. 
// Must start with `./`! 
entry: './', 
// Place output files in `./dist/my-app.js` 
output: { 
    path: DIST_DIR, 
    filename: 'index.js' 
}, 
module: { 
    noParse: [ 
     /aws\-sdk/, 
    ], 
    loaders: [ 
     { 
      test: /\.json$/, 
      loader: 'json' 
     } 
    ] 
} 
}; 

である私は、次を得る:

{ 
    "errorMessage": "Cannot find module './lib/browser_loader'", 
    "errorType": "Error", 
    "stackTrace": [ 
    "Function.Module._load (module.js:417:25)", 
    "Module.require (module.js:497:17)", 
    "require (internal/module.js:20:19)", 
    "Object.<anonymous> (/var/task/index.js:3651:1)", 
    "__webpack_require__ (/var/task/index.js:20:30)", 
    "webpackUniversalModuleDefinition (/var/task/index.js:149:28)", 
    "Object.<anonymous> (/var/task/index.js:156:3)", 
    "__webpack_require__ (/var/task/index.js:20:30)", 
    "Object.<anonymous> (/var/task/index.js:75:18)" 
    ] 
    } 

任意のアイデア?

答えて

0

誰もが将来的にすることを必要とする場合、私はケースに問題が見つかりました:

問題がインスタンス化で「CognitoIdentityServiceProvider」です。例えば:

new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool 

上記は、AWSognitoから直接CognitoUserPoolにアクセスすると機能します。

この方法では、webpackを使用する必要はありません。

関連する問題