首先,我是 Angular 的新手,我正在逐步学习教程视频。我已经在这个问题上停留了将近 2 周,并且花了很多时间在其他类似的论坛中寻找解决方案。我意识到这是一个常见的错误,但是在尝试了几十个左右的解决方案但没有成功之后,我想我不妨发布我的经验,也许它可以为我们许多人似乎遇到的这个问题提供一些启示。
问题
该错误发生在跟随视频的“Angular Tutorial #13”部分,该部分开始于 1:42:00 左右。我完全按照视频中显示的所有步骤进行操作,但在运行“npm start”的终端中遇到以下错误消息:“start”[HPM] Error occurred while trying to proxy request /api/file.php from localhost:4200 to http://localhost:1234 (ECONNREFUSED)
的我的 package.json 脚本:“ng serve --proxy-config proxyconfig.json " 并且我的 proxyconfig.json 包含:
{
"/api":{
"target": "http://localhost:1234",
"secure": false,
"changeOrigin": true
}
}
在 CMD 中,我导航到文件夹“intro2angular”,它是“/test/api/file.php”的根目录,然后在 VisualStudioCode 的 powershell 中运行php -S localhost:1234
之前运行npm start
。然后我跑npm start
。代码编译成功。在 Chrome 中,如果我转到该文件,http://localhost:1234/test/api/file.php
则该文件将显示在浏览器中。但是,如果我去http://localhost:4200
并单击执行代码以请求file.php的锚点,则[HPM] Error occurred while trying to proxy request /api/file.php from localhost:4200 to http://localhost:1234 (ECONNREFUSED)
错误将显示在终端中。在 Chrome 中开发人员工具的网络选项卡中,当我检查file.php的标题时,我看到以下内容:
Request URL: http://localhost:4200/api/file.php
Request Method: GET
Status Code: 504 Gateway Timeout
Remote Address: 127.0.0.1:4200
Referrer Policy: no-referrer-when-downgrade
请原谅我在解释我遵循的每一步时过于冗长,但由于我已经看到几个类似的论坛帖子,关于在尝试使用代理时引发的 ECONNREFUSED 错误,我认为包括每个小细节可能是区分来源的必要条件本例中的错误。如果需要更多详细信息/代码,我很乐意将其包含在内。
到目前为止我尝试过的解决方案
请注意,这不是一个完整的列表,我尝试了其他几种解决方案,但这些似乎是对其他人有效的最常见的解决方案。另外,我并不是说我不会再尝试这些解决方案,因为我愿意接受任何和所有建议。
- 为 Angular 应用程序和 file.php 指定随机 localhost 端口
- 用于
setTimeout
向.getData()
函数调用添加延迟 - 禁用防火墙
- 包括proxyconfig.json
"pathRewrite": {"^/api" : ""}
的选项
我感谢有关此问题的任何和所有帮助/建议/讨论,因为我自己没有成功,并且在解决此问题之前我无法继续使用角度教程。先感谢您。