Json 无法访问本地文件

Json 无法访问本地文件,json,angular,angular2-http,Json,Angular,Angular2 Http,我尝试这样测试我的Angular2服务: “C:/MyAngularApp/src/app/common”中的spec.ts文件 let testFile = "./test.json"; // full path: C:\MyAngularApp\src\app\common\test.json http.get(testFile).map(d => d.json()).subscribe(()=>log("it works")) 但我不能让它工作-我得到: 失败:未找到URL

我尝试这样测试我的Angular2服务:

“C:/MyAngularApp/src/app/common”中的spec.ts文件

let testFile = "./test.json"; // full path: C:\MyAngularApp\src\app\common\test.json

http.get(testFile).map(d => d.json()).subscribe(()=>log("it works"))
但我不能让它工作-我得到:

失败:未找到URL的状态为404的响应:

我已尝试将此文件放在其他位置:

  • “C:\MyAngularApp”
  • “C:\MyAngularApp\src”
  • “C:\MyAngularApp\src\app”
  • “C:\MyAngularApp\src\assets”
但没有结果

我相信这是与路径有关的

这就是我希望通过http.get加载本地文件的原因: 我想为我的一些服务做一些额外的层。我称之为“HttpResourse”,它包含如下方法:Create()、Get()、Update()、Delete()和SetResourceUrl(resourceUrl:string)。最后一个是我需要按路径加载文件的原因。

我找到了答案

当我将路径设置为“assets/test.json”时,一切正常。它不能是“pathToSrc/assets/test.json”或类似的东西。它必须是“资产”或“./assets”

但是为什么呢?为什么这个目录(“资产”)如此特殊?

我找到了答案

当我将路径设置为“assets/test.json”时,一切正常。它不能是“pathToSrc/assets/test.json”或类似的东西。它必须是“资产”或“./assets”


但是为什么呢?为什么此目录(“资产”)如此特殊?

为什么要尝试通过HTTP访问项目中的文件?为什么不直接导入它呢?我想测试MyHttpService,所以我需要“下载”文件。如果您想测试您的服务,请使用文档中显示的
MockBackend
,然后,您甚至不需要通过internet连接进行测试。MyHttpService包含一些额外的逻辑,我想在真实的json数据上进行测试。模拟后端完全能够使用json负载进行响应—它可以测试发出的请求和响应的处理。请问,为什么您要通过HTTP访问项目中的文件?为什么不直接导入它呢?我想测试MyHttpService,所以我需要“下载”文件。如果您想测试您的服务,请使用文档中显示的
MockBackend
,然后,您甚至不需要通过internet连接进行测试。MyHttpService包含一些额外的逻辑,我想在真实的json数据上进行测试。模拟后端完全能够使用json负载进行响应—它可以测试发出的请求和响应的处理。请。默认情况下,相对路径与根不相关。如果希望“pathToSrc/assets/test.json”工作(相对于根),可以在HTML页面中添加一个标记,默认情况下,相对路径不相对于根。如果您想让“pathToSrc/assets/test.json”工作(相对于根目录),您可以在