我的团队接手了一个没有任何文档且与之前的开发人员没有联系的项目。在 package.json 文件中我看到一个脚本
"start": "http-server -a 192.168.1.200 -p 8080 -c-1 ./app/"
但是当我运行它时它会抛出一个错误:
Error: listen EADDRNOTAVAIL: address not available 192.168.1.200:8080
at Server.setupListenHandle [as _listen2] (net.js:1263:19) at listenInCluster (net.js:1328:12) at doListen (net.js:1461:7) at process._tickCallback (internal/process/next_tick.js:63:19) at Function.Module.runMain (internal/modules/cjs/loader.js:834:11) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Emitted 'error' event at: at emitErrorNT (net.js:1307:8) at process._tickCallback (internal/process/next_tick.js:63:19) [... lines matching original stack trace ...] at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
我尝试添加192.168.1.200 myrealpage.com
给我的/etc/hosts
文件,但仍然没有运气。
如果我在 127.0.0.1 主机上启动我的项目,则应用程序存在 CORS 问题
Access to XMLHttpRequest at 'https://www.myrealpage.com/api/player/settings' from origin 'http://127.0.0.1:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
如何启动应用程序,使其不会出现 address not available 192.168.1.200:8080
和 CORS 问题?
this comment from Sar Putnik之后我明白了192.168.1.200
是以前开发者的IP,但他是如何处理CORS问题的,对我来说仍然是个谜。
最佳答案
package.json
中的IP地址可能是之前开发者的机器IP,EADDRNOTAVAIL
清楚地表明该IP地址没有在任何网络上分配给您的机器界面。使用您的计算机拥有的 IP,无论是本地的还是非本地的,或者根本不指定 IP。
关于 CORS,这是在两个不同端口上使用前端和后端时的常见问题。根据您前端使用的技术,您可以使用代理根据 URL 模式在前端或后端重定向请求(例如:以/api 开头的请求被重定向到后端,其余的则被重定向到前端)。如果您不能(或不想)这样做,您可以使用 Express CORS middleware 禁用 CORS 策略。为了添加 Access-Control-Allow-Origin
header 。
请注意,这在生产环境中不是一个好的做法,因为这会使您容易受到跨站点脚本攻击。
关于javascript - CORS 并解决不可用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60534536/