【问题标题】:Unable to access local file in Angular 2+无法在 Angular 2+ 中访问本地文件
【发布时间】:2018-01-31 09:27:14
【问题描述】:

我正在尝试 Angular 中的 http 请求功能。但是,我认为我无法访问项目文件夹中的任何本地文件。当我访问“localhost:4200/testfile.json”时,它会抛出一个错误: ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'starter/testfile.txt'

然后我查看了路由器模块,无法找出问题所在。 这是路由器模块的代码:

imports: [
RouterModule.forRoot([
  { path: '', redirectTo: 'starter', pathMatch: 'full' },
  { path: 'starter', component: StarterComponent },
])],

我还尝试将文件放入 assets 文件夹并使用 localhost:4200/assets/testfile.txt 来访问它,这很有效。我想知道为什么资产是唯一允许访问的文件夹,而所有其他路径都不起作用。是不是我的路由模块的问题?

非常感谢。

【问题讨论】:

    标签: angular path routing filepath


    【解决方案1】:

    我假设您使用的是 Angular CLI? CLI 在非常特定的文件夹中查找片段。如果您希望它在其他文件夹中查找内容,您可以修改 angular.cli.json 文件。

    例如:

      "assets": [
        "assets",
        "api",
        "favicon.ico"
      ],
    

    这个 assets 数组告诉 CLI 同时查看 assets 文件夹和 api 文件夹。您可以添加任何其他您想要的文件夹。

    【讨论】:

    • 是的,我正在使用 Angular cli。该错误与我的路由器模块设置有关还是只是我的 angular.cli.json 文件的问题?
    • 这应该与路由无关。只是因为它在已知的文件夹列表中找不到该文件,它认为 url 可能是它应该尝试路由到的东西。
    • 角度而言,源文件中的所有数据是否都被视为“受保护”并且不会用作资源文件?将文件夹添加到资产数组中是解决此问题的唯一方法吗?我只是对文件路径系统如何以角度工作感到好奇
    • 据我所知,如果您使用的是 Angular CLI,那么您需要将其添加到 assets 数组中。如果您不使用 Angular CLI,那么您有更多选择。
    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2019-03-23
    • 2018-03-10
    • 2018-08-05
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多