首先,我是angel的新手,并且我将一步一步地遵循tutorial video。 我已经在这个问题上停留了将近2个星期,并且花了很多时间在其他类似的论坛上寻找解决方案。我意识到这是一个普遍的错误,但是在尝试了数十种解决方案但没有成功之后,我想我也可以发表自己的经验,也许它可以为我们许多人似乎都遇到的这个问题提供一些启示。 >
在跟随视频的“ Angular Tutorial#13”部分(从1:42:00开始)时发生错误。我完全按照视频中的步骤进行操作,但是在运行“ npm start”的终端中遇到以下错误消息:
[HPM] Error occurred while trying to proxy request /api/file.php from localhost:4200 to http://localhost:1234 (ECONNREFUSED)
我的“ start”的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”的根目录,在运行php -S localhost:1234
之前,先运行
npm start
VisualStudioCode中的powershell。然后,我运行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错误的问题,因此我认为可能需要包括所有次要细节以区别在这种情况下错误的来源。如果需要更多详细信息/代码,我很乐意将其包含在内。
请注意,这不是一个完整的列表,我尝试了其他几种解决方案,但是这些解决方案似乎是最常用的解决方案。另外,我并不是说我不会再尝试这些解决方案,因为我愿意接受所有建议。
setTimeout
向.getData()
函数调用添加延迟"pathRewrite": {"^/api" : ""}
我非常感谢您解决此问题,因为我自己没有获得成功,在解决此问题之前,我无法继续进行角度教程。预先谢谢你。
答案 0 :(得分:1)
如果您使用的是Angular和PHP内置服务器,则必须同时使用IP地址。类似于:block_id
位于Angular一侧,类似于"target": "http://127.0.0.1:8000"
位于PHP一侧。
答案 1 :(得分:0)
我遇到了同样的问题,并寻找了适合年龄的解决方案...
就我而言,它有助于提供localhost(而不是“ localhost”)的IP。
因此将您的proxy-config更改为此:
{
"/api":{
"target": "http://127.0.0.1:1234",
"secure": false,
"changeOrigin": true
}
}
并尝试使用“ ng serve --proxy-config proxyconfig.json”代替npm起始版本。我读到,有时package.json配置部分被某些人忽略了。
希望这会有所帮助!