Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数不返回的对象。然后使用-但能够console.log对象,并显式返回它_Javascript_Ruby On Rails_Heroku_Return_Fetch - Fatal编程技术网

Javascript 函数不返回的对象。然后使用-但能够console.log对象,并显式返回它

Javascript 函数不返回的对象。然后使用-但能够console.log对象,并显式返回它,javascript,ruby-on-rails,heroku,return,fetch,Javascript,Ruby On Rails,Heroku,Return,Fetch,请有人帮我解释一下为什么会这样。那么,函数调用的返回值是否在它之前呢?这在我部署到heroku之前就已经起作用了,我感觉这与急切的加载有关,但我真的不知道 基本上,问题是:handleSubmit on registration调用注册函数,这意味着返回一个用户对象,但是。然后没有从注册函数返回一个值,并且出现错误:无法读取属性。然后是未定义的。因此,我的handeSubmit尝试注册到应用程序失败 注册方法本身功能正常(用户被添加到后端[Rails],JWT被提供并设置在浏览器的本地存储中,用

请有人帮我解释一下为什么会这样。那么,函数调用的返回值是否在它之前呢?这在我部署到heroku之前就已经起作用了,我感觉这与急切的加载有关,但我真的不知道

基本上,问题是:handleSubmit on registration调用注册函数,这意味着返回一个用户对象,但是。然后没有从注册函数返回一个值,并且出现错误:无法读取属性。然后是未定义的。因此,我的handeSubmit尝试注册到应用程序失败

注册方法本身功能正常(用户被添加到后端[Rails],JWT被提供并设置在浏览器的本地存储中,用户对象从API呈现为JSON并成功地记录到控制台中)

handleSubmit如下所示:

      e.preventDefault();
      API.signup({ username, password })
         .then(user => {
            console.log(user);
            props.setUser(user);
            history.push("/home");
         })
         .catch(errors => {
            setErrors(errors[errors]);
            console.error(errors);
         });
   };
const signup = userDetails => {
  fetch(SIGNUP_URL, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json"
    },
    body: JSON.stringify({ user: userDetails })
  })
  .then(jsonify)
  .then(data => {
    localStorage.setItem("token", data.token);
    console.log(data.user)
    return data.user
  })
};
注册功能如下所示:

      e.preventDefault();
      API.signup({ username, password })
         .then(user => {
            console.log(user);
            props.setUser(user);
            history.push("/home");
         })
         .catch(errors => {
            setErrors(errors[errors]);
            console.error(errors);
         });
   };
const signup = userDetails => {
  fetch(SIGNUP_URL, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json"
    },
    body: JSON.stringify({ user: userDetails })
  })
  .then(jsonify)
  .then(data => {
    localStorage.setItem("token", data.token);
    console.log(data.user)
    return data.user
  })
};
有趣的是,我的登录函数除了在我的API上命中不同的端点之外,与注册(甚至是相同的handleSubmit)完全相同,工作非常好


这不是CORS的问题,我很确定,否则登录也不会起作用。感谢您提供有关如何调试的建议。我可以根据请求提供后端和前端代码。

您的
singup
函数不会返回任何内容,因此您会出现
错误
在获取之前使用
return
关键字,或者在注册函数中删除函数周围的
{}
在获取之前添加return这很快。谢谢你指出这一点。你知道为什么这个问题只有在部署到Heroku后才会出现吗?在localhost上,这种情况从未发生过我不确定,但如果我不得不猜测,也许在您的开发环境中,您没有在您的箭头函数中使用
{}
,我使用了,但它现在可以工作了,这就是现在最重要的:)Ty