Nx Angular - 没有这样的文件或目录,打开 'd:\...\TheApp\Source\Angular.Apps/apps/app-client/src/environments/environment.prod.ts'

Jac*_*ues 4 monorepo angular nrwl-nx

我花了一些时间开发 PowerShell 项目,以自动构建基于 @Nrwl NX monorepos 的 C# 和 Angular 应用程序。在此之前一切工作正常,但当我尝试一个简单的:

nx build --baseHref=/apps/admin/ --deployUrl=/apps/admin/ --watch 
Run Code Online (Sandbox Code Playgroud)

我现在得到错误

ENOENT: "no such file or directory, open 'd:\Projects\TheApp\Source\Angular.Apps/apps/the-client/src/environments/environment.prod.ts'" 
Run Code Online (Sandbox Code Playgroud)

问题:我认为它正在寻找environment.prod.ts,因为replaceFile部分,但由于我是在本地开发中构建的,所以我认为它根本不应该进行替换。
另外:即使我正在构建 APP-ADMIN 应用程序,它也在寻找 APP-CLIENT 环境文件。

在我的构建自动化项目中可能导致问题的一些点:

  1. 我重命名了workspace.json 中的所有应用程序配置。因此,例如“生产”变成了“生产客户端1”,它在替换过程中使用了environment.prod.client1.ts文件

    “fileReplacements”:[
    {
    “替换”:“apps/app-admin/src/environments/environment.ts”,
    “with”:“apps/app-admin/src/environments/environment.prod.orgb.ts”}
    ],

  2. 在上面的1)中,我提到了文件environment.prod.client1.ts,它最初是environment.prod.ts文件。由于错误提到它找不到此文件,因此问题可能出在此处,或者我应该更改一些额外的配置才能使其正常工作?

最后说明:我的 powershell cmdlet 调用以下命令:

nx build portfolio-client --deleteOutputPath=false --baseHref=/apps/client/ --deployUrl=/apps/client/ --configuration=staging-client-client1 
Run Code Online (Sandbox Code Playgroud)

这就像管理应用程序和每个客户端的变体一样具有魅力。只有在开发构建期间我才会遇到这些问题。

编辑1:
我在我拥有的两个“应用程序”类型项目中为environment.prod.ts和environment.staging.ts创建了虚拟文件,这解决了问题。这些文件是空白的,所以不确定为什么为 Dev/local 构建不只是处理environment.ts 文件

Jac*_*ues 5

我在以下 GitHub 报告问题的评论中找到了答案:已删除文件的“错误:ENOENT:没有这样的文件或目录”#3370

归根结底是 Nrwl 文件 file-hasher.js 使用了 git 哈希,并且由于我没有提交这些更改,所以它正在寻找旧文件名。我通过在当前分支上暂存并提交所有更改来解决这个问题。

进一步看,这似乎是一个错误,后来在 Nx 10.0.2 及更高版本中修复,但我们尚未升级到该版本。