资产文件夹解析:在项目中运行应用程序不获取资产

时间:2019-05-01 16:18:11

标签: angular7 workspace

我在Angular工作区中创建了一个应用程序。运行时

ng serve [application-name]

可以很好地拾取资产文件夹中的图像和文件。现在我只想运行工作区

ng serve

我希望通过延迟加载应用程序来解决路径问题,但我会得到

zone.js:3243 GET http://localhost:4200/assets/terms.txt 404 (Not Found)

在工作区中访问应用程序资产的正确设置是什么?

1 个答案:

答案 0 :(得分:0)

EDIT (离线)后,我认为我们已经找到了解决方案。即使我发布的原始答案并不能真正解决问题,我仍将其张贴在此处,并留在下面以供参考。

您正在尝试运行多个Angular应用,并通过Firebase之类的方法在它们之间进行路由,您可以在其中将不同的路由定向到不同的应用。

要使它在本地进行开发,您需要在自己的端口上分别运行每个Angular应用程序。建议您在环境文件中控制路由的目的地。这样,当您在本地运行时,您可以指向应用程序正在运行的端口,然后指向Firebase在生产中使用的终结点。

您的根应用中的示例environment.ts文件

{
  ...,
  OTHER_APP_URL: 'localhost:4201'
}

prod.environment.ts

{
  ...,
  OTHER_APP_URL: '/otherApp'
}

然后在您的组件中

....
import {environment} from '<path to environments file>';

@Component({
  selector: 'my-component',
  template: '<a [href]="otherAppUrl"></a>'
})
export class MyComponent implements OnInit {
  otherAppUrl: string;

  ngOnInit() {
   this.otherAppUrl = environment.OTHER_APP_URL;
  }
}

您可能需要在其他应用程序中执行类似的操作,以便您可以将它们从其他应用程序路由到根应用程序或其他子应用程序。在为生产而构建时,您可能还需要使用--baseHref标志来构建其他应用程序,以便它们的资产可用。有关文档的更多信息,请参见此处:https://angular.io/cli/build


旧答案-不适用于该问题

在查看您的仓库时,我在根项目的资产文件夹中看不到terms.txt。我检查了它是否在回购中的其他库之一中,但也找不到它。

如果这是您的一个库中的组件或服务所包含或引用的资产,则由于该功能isn't currently supported by the Angular CLI,因此在构建过程中需要将其复制到库的输出文件夹中。

可能为您执行此操作的构建脚本示例为:

ng build my-lib-with-assets --prod && cp -r projects/my-lib-with-assets/src/assets dist/my-lib-with-assets && ng build --prod

别忘了在构建主项目之前需要构建库。