我正在尝试使用express
设置服务器。原因是我将必须向API提供者AIS Hub查询船只的经度和纬度坐标。但是,该请求可以每分钟执行一次。收到lat-lon后,我将在google-maps上找到船只。
我从未设置过服务器,我遵循的教程here包含一个示例,然后在练习中实施它并遵循该页面上的说明。
在我的项目的理智文件夹中,我sudo npm install express
在我的项目文件夹中创建一个Server.js
文件。该文件很短:
const express = require('express');
const app = express();
app.get('/hey', (req, res) => res.send('Hi Server!'));
app.listen(8080);
现在在同一文件夹中,我访问package.json
并添加"proxy": "http://localhost:8080"
。
根据文档,此:
这告诉React将代理API请求发送到已构建的Node.js服务器 使用Express。
所以我的package.json
如下:
{
"name": "my-project",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"contentful": "^7.13.1",
"express": "^4.17.1",
"express-generator": "^4.16.1",
"google-map-react": "^1.1.5",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-icons": "^3.8.0",
"react-router-dom": "^5.1.2",
"react-scripts": "3.3.0",
"react-select": "^3.0.8",
"reactstrap": "^8.4.0",
"styled-components": "^5.0.0",
"proxy": "http://localhost:8080"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [ ">0.2%", "not dead", "not op_mini all" ],
"development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ]
},
"devDependencies": {
"standard": "^14.3.1"
}
}
现在文档说:
现在使用node server.js运行此Node进程。在另一个窗口中 使用npm start启动CRA应用。
因为我将所有内容都放在同一个文件夹中,所以我sudo npm install express
像我解释的那样,不需要打开第二个窗口。
因此,我启动了sudo npm start
,浏览器在端口3000上打开(默认情况下)。
从这里我打开开发工具,如下所述:
1)打开开发工具:
2)运行命令fetch('/hey')
,因此从“控制台”选项卡中执行以下操作:
3)我按照说明进入网络面板,应该可以在几个打印屏幕下方看到响应Hi Server!
,但看不到它:
在点击hey
之后,我进入以下打印屏幕。状态似乎为Ok
,但我没有看到任何消息确认服务器实际上处于活动状态:
到目前为止我尝试过的事情:
我尝试了启动和关闭localhost:3000
的不同组合。
我尝试多次获取该消息,但是尽管进入网络面板后,状态似乎还可以,但是请求似乎仍在等待处理。
我对做什么感到困惑。 感谢您提供解决此问题的可能方法。