AWS Cognito用户池注册“未知错误,来自提取的响应正文为:未定义”

时间:2018-10-09 21:28:52

标签: amazon-web-services amazon-cognito aws-amplify

注册用户后,将添加该用户,但脚本会返回错误对象:{code:“ UnknownError”,消息:“ Unknown error,来自获取的响应正文为:undefined”}

我遵循了https://stackoverflow.com/a/52033216/8111346的建议。 但是问题没有解决。

index.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src="dist/ww.js"></script>
<script>
  var global = global || window;
  var Buffer = Buffer || [];
  var process = process || {
      env: { DEBUG: undefined },
      version: []
    };
  var w = window.w();
  global.window = {w};
  global.navigator = () => null;
</script>
<script src="./dist/m.js"></script>
</body>
</html>

ww.js

const WindowMock = require('window-mock');
  import fetch from 'node-fetch'
  global.fetch = global.fetch || fetch
  function w(){
    return WindowMock.localStorage;
  }
  window.w = w;

m.js

import { CognitoUserPool, CognitoUserAttribute } from 'amazon-cognito-identity-js';

var poolData = { UserPoolId : "us-west-2_someData",
  ClientId : "someData"
};
var userPool = new CognitoUserPool(poolData);
var userName = "example@mail.com";
var attributeList = [];

var dataEmail = {
  Name : 'email',
  Value : userName
};

var attributeEmail = new CognitoUserAttribute(dataEmail);


attributeList.push(attributeEmail);


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

webpack.config.js

const path = require('path');
module.exports = {
  entry: ["./module.js"],
    mode: 'development',
  output: {
    path: path.resolve(__dirname + '/dist'),
    filename: 'm.js'
  },
  module: {
    rules: [
      {
        test: /\.json$/,
        loader: 'json-loader'
      }
    ]
  },
     watch : true
};

在对cognito-idp.us-west-2.amazonaws.com的请求中,标题X-Amz-User-Agent: aws-amplify/0.1.x js被传递了,但我不使用Amplify。也许是由于我的环境设置造成的?

我很高兴阅读您的想法。

2 个答案:

答案 0 :(得分:1)

节点上没有获取。您需要使用polyfill进行抓取,例如node-fetch

import fetch from 'node-fetch'
global.fetch = global.fetch || fetch

但是请记住,放大不是为在节点上工作而设计的,因此还可能存在其他问题。

答案 1 :(得分:1)

在cognitoUser解决我的问题之前添加 var

{{1}}