26

I have one JSON file at the following location in my system:

/etc/project/system.json

I'm trying to access this file using my system path but it's not working. However it's working fine if i put this file inside src in my application.

JSON File path is "/etc/project/system.json" and my application path is "/var/www/DemoProject"

So how can I access file from my local system?

4

2 回答 2

22

正如其他人所说,您的问题只能由您使用的服务器解决。您想要的通常是命名的静态文件服务。您可以在 Internet 上找到为您的服务器提供静态文件的具体说明。

但是,您可能正在构建您的 Angular 应用程序。你甚至可能正在使用 Webpack。

如果您使用 Angular-cli 构建您的应用程序,您可以使用以下配置复制资产下的系统文件夹。如果您使用 Webpack,这也将在您每次请求时动态获取文件,而无需复制文件。在此处阅读有关 webpack的信息。在您的.angular-cli.json文件中:

"assets": [
  "assets",            // These two are generally used in Angular projects
  "favicon.ico",       // ^^^^^^^^^
  {
    "glob": "system.json",
    "input": "/etc/project/",
    "output": "./<outputfolder>"
  }
]

如果这样做,您可以使用 url 访问文件http://yourdomain/<outputfolder>/system.json

如果您在 typescript 代码中使用此 json 文件,您还可以设置 typescript 路径映射配置来查找此文件。Webpack 和 Angular-cli 也支持这种配置。在您的tsconfig.json文件中:

"paths": {
  "system.json": [
    "/etc/project/system.json"
  ]
}

然后您可以在 typescript 中导入 json,例如:

import * as data from 'system.json';

您必须有此 json 文件的类型声明,因为 typescript 无法自行解析 json 文件的类型。你可以在这里阅读。简而言之,把它放在typings.d.ts你的项目根目录中:

declare module "*.json" {
    [key: string]: any;
}

您可以在此处阅读有关 typescript 路径解析的更多信息。

于 2017-10-05T12:12:02.367 回答
0

另一种选择可能是使用电子。

这是一个教程:Angular 5 和 Electron

然后,您可以使用 Angular 构建您的应用程序并使用电子 API 访问文件。

Electron 基本上只是将您的 Web 应用程序捆绑在一个自包含的 nodejs 环境中,您可以从 linux/mac-os 或 windows 作为应用程序运行,并像常规应用程序一样通过 api 进行系统访问。

于 2018-04-05T20:02:27.607 回答