什么可能导致 docker 容器内的角度函数"TypeError: (0 , d.__decorate) is not a function"?



我正在构建一个web应用程序。前端是angular,后端是。net Core。

目前,我正在做以下事情来构建我的最终docker映像:

  1. 构建angular应用
  2. 将编译好的angular文件拷贝到asp.net core的目录
  3. 构建asp.net core app
  4. 发布asp.net core app
  5. 在docker镜像中复制发布结果

这是我当前的dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM node:latest as node
WORKDIR /app
COPY Frontend .
RUN npm install
RUN npm run build

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Backend/my-project.csproj", "Backend/"]
RUN dotnet restore "Backend/my-project.csproj"
COPY Backend Backend
WORKDIR "/src/Backend"
COPY  --from=node /app/dist/app/ /wwwroot/
RUN dotnet build "my-project.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "my-project.csproj" -c Release -o /app/publish 
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "my-project.dll"]

整个过程没有错误完成,但是当我试图访问http://localhost/时,我得到了html,但是有一个javascript错误:

Uncaught TypeError: (0 , d.__decorate) is not a function
at Object.619 (main.3ba20fe70ead0a4b.js:1:45137)
at r (runtime.834ae414fca175dc.js:1:127)
at Object.1983 (main.3ba20fe70ead0a4b.js:1:45670)
at r (runtime.834ae414fca175dc.js:1:127)
at main.3ba20fe70ead0a4b.js:1:512504
at n (runtime.834ae414fca175dc.js:1:2649)
at main.3ba20fe70ead0a4b.js:1:57

但:

  1. ng serve工作结果
  2. 服务于测试服务器npm build工作的结果
  3. npm build的结果复制到我的asp.net core的wwwroot中调试
  4. 发布asp.net核心应用程序(与wwwroot填充)也工作
  5. 当我试图访问我的npm构建文件夹中存在的每个单独文件时,它似乎是可访问的(不确定,因为名称有这个数字不完全相同)
  6. 如果我删除nodes_modules, package -lock。运行npm installnpm run build,它也可以工作
  7. 我删除了angular的应用,创建了另一个,运行整个docker构建,它可以工作了。
  8. 我试图将节点更改为我在计算机上使用的版本(节点16.14)

编辑我开始从我的应用程序中删除所有东西,看看它什么时候重新开始工作。似乎一旦我删除了NgxsModule.forFeature([])的状态,它就工作了。

基本上,如果我有一个带有:NgxsModule.forFeature([])它可以工作,但NgxsModule.forFeature([UiState])不能,即使ustate几乎为空:

@State<UiStateModel>({
name: 'ui',
defaults: {
isMenuOpen: true,
},
})
@Injectable()
export class UiState {}

我有点绝望了,你知道什么会导致这个错误吗?

我不太确定是什么做到的,但我终于解决了。我做了什么:

  • 我有一些ngxs包被称为开发依赖和依赖(与不同的版本),我只保留一个在依赖
  • 在我的tsconfig。json,我有一个路径指定"tslib"(到node_modules一个)。我记得我添加了它,但我不记得为什么,我认为在某些时候我有一个编译错误,我发现在SO这个解决方案。我确实删除了tslib的这个路径,这可能是解决问题的方法。

相关内容

  • 没有找到相关文章

最新更新