Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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 componentDidMount的ReactJS API调用返回index.html作为响应_Javascript_Reactjs_Mongodb_Api_Mern - Fatal编程技术网

Javascript componentDidMount的ReactJS API调用返回index.html作为响应

Javascript componentDidMount的ReactJS API调用返回index.html作为响应,javascript,reactjs,mongodb,api,mern,Javascript,Reactjs,Mongodb,Api,Mern,我有一个非常简单的ReactJS应用程序。我想在页面加载时从API中获取一些数据。在我的componentDidMount()函数中,我调用我的getData()方法来初始化应用程序中的状态。当我这样做时,控制台会告诉我: Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 我不知道为什么会发生这种情况,因为当我从PostMan调用我的API时,一切都很好。DB的预期响应(与邮递员的呼叫一

我有一个非常简单的ReactJS应用程序。我想在页面加载时从API中获取一些数据。在我的
componentDidMount()
函数中,我调用我的
getData()
方法来初始化应用程序中的状态。当我这样做时,控制台会告诉我:

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
我不知道为什么会发生这种情况,因为当我从PostMan调用我的API时,一切都很好。DB的预期响应(与邮递员的呼叫一起工作):

我收到的答复是:


求职申请
您需要启用JavaScript才能运行此应用程序。
就这样做吧

const url = "/api/applications";
fetch(url)
    .then(response => response.json())
    .then(data => this.setState({ applications: data }));
希望这会有帮助。

就这样做吧

const url = "/api/applications";
fetch(url)
    .then(response => response.json())
    .then(data => this.setState({ applications: data }));

希望这会有所帮助。

aaa和大量的脑放屁

当然,我的申请没有返回任何内容。我让我的API作为一个单独的实例在我的机器上的一个完全不同的端口上运行。因此,当我想点击我的API时,我必须指定完整的URL,而不仅仅是
/API/无论什么
——在我的情况下,完整的URL应该是
http://localhost:8080/api/applications

注意-最佳做法是将URL的基本部分存储在
.env
文件中,并为其命名,如
URL\u base=http://localhost:8080
并将其前置到我的变量

let url=process.env.url_BASE+'/api/applications';

这样,如果不设置
URL\u BASE
,只需将emty字符串前置到URL即可。此结构用于Heroku和MASSIVE BRAINFART等托管服务

当然,我的申请没有返回任何内容。我让我的API作为一个单独的实例在我的机器上的一个完全不同的端口上运行。因此,当我想点击我的API时,我必须指定完整的URL,而不仅仅是
/API/无论什么
——在我的情况下,完整的URL应该是
http://localhost:8080/api/applications

注意-最佳做法是将URL的基本部分存储在
.env
文件中,并为其命名,如
URL\u base=http://localhost:8080
并将其前置到我的变量

let url=process.env.url_BASE+'/api/applications';

这样,如果不设置
URL\u BASE
,只需将emty字符串前置到URL即可。这种结构与HeloCu

@难以置信的BulpPoor一起使用,如果这对你的KOY来说比“请做投票”:“我本来会工作的,所以我还是会投票赞成的:但是,在这种情况下,它基本上只是我自己的脑筋在快乐中有帮助。L:)请考虑这个标记,这样可以关闭这一阙。非常感谢。我不能把你的回答看作是这个问题的解决办法,因为它不能解决这个问题。但是你提供的代码是一种更为巧妙、更好的方法,它会工作得非常完美:)我已经发布了我自己对真实情况的答案,并将在可能的时候标记为正确tomorrow@IncrediblePony如果这不符合你的要求,请投票:)我会工作,所以我会投票:)但在这情况基本上就是我自己的脑筋在快乐中有帮助。L:请考虑这个标记,这样可以关闭这阙。非常感谢。我不能把你的回答看作是这个问题的解决办法,因为它不能解决这个问题。但您提供的代码是一种更灵活、更好的方法,它会工作得很好:)我已经发布了我自己对实际发生的事情的答案,并将在明天我可以的时候标记为正确。每次您可以将其存储在env文件中,并在项目中像全局一样使用它。这是真的-我将添加这是对答案的注释,而不是每次您可以将其存储在env文件中并在项目中像全局一样使用它时都编写localhost