容器化 .NET 8 Blazor WASM 在从 .NET 6 更新后中断

问题描述 投票:0回答:1

将 .NET 版本从 6 更新到 8 后,启动容器后我无法使用已部署的 WebApp,并出现如下所示的异常

我现在有了这个 Dockerfile,它可以在 .NET 6 上正常工作。只是 SDK 版本有所不同。

Dockerfile

FROM node:21-alpine3.18 as build-npm
WORKDIR /src`
COPY ["MyProj", "MyProj"]
WORKDIR /src/MyProj/NpmJS/
RUN npm install
RUN npm run build

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY --from=build-npm /src .
COPY ["otherProj", "otherProj"]
RUN dotnet restore "MyProj/MyProj.csproj"

FROM build AS publish
ENV BuildingDocker true
RUN dotnet publish "MyProj/MyProj.csproj" -c Release --no-restore -o /app/publish

FROM nginx:alpine AS final
WORKDIR /usr/share/nginx/html
COPY --from=publish /app/publish/wwwroot .
COPY MyProj/nginx.conf /etc/nginx/nginx.conf

重现步骤

显然,您需要安装并运行 .NET 8 工作负载和 Docker。

  1. 使用 .NET 8 创建 Blazor-WebAssembly 应用程序项目
  2. 调整 Projects/Properties 文件夹中的 launchsettings.json 并设置:
"applicationUrl": "https://localhost:5001;http://localhost:5000"
  1. 使用此 Dockerfile,因为您不需要 NPM 部分:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY --from=build-npm /src .
COPY ["otherProj", "otherProj"]
RUN dotnet restore "MyProj/MyProj.csproj"

FROM build AS publish
ENV BuildingDocker true
RUN dotnet publish "MyProj/MyProj.csproj" -c Release --no-restore -o /app/publish

FROM nginx:alpine AS final
WORKDIR /usr/share/nginx/html
COPY --from=publish /app/publish/wwwroot .
COPY MyProj/nginx.conf /etc/nginx/nginx.conf
  1. 在项目根目录创建nginx.conf:
events { }
http {
include mime.types;
server {
listen 5001;

    location / {
        root /usr/share/nginx/html;
        try_files $uri $uri/ /index.html =404;
    }
}
}

  1. 使用以下命令构建 dockerfile: docker build -t MyApp 。
  2. 我通过撰写文件启动它,但此命令应该针对单个项目执行此操作: docker run MyApp -p 5001:5001

导航到本地主机并打开开发工具

看到以下错误:

Uncaught TypeError: Cannot read properties of undefined (reading 'dotnet.wasm')
at blazor.webassembly.js:1:35948
at window.wasmmodulecallback (blazor.webassembly.js:1:42668)
at :1:20
at blazor.webassembly.js:1:43463
at blazor.webassembly.js:1:43478
at new Promise ()
at Object.start (blazor.webassembly.js:1:34639)
at Object.At [as start] (blazor.webassembly.js:1:59571)

任何帮助或指导表示赞赏。

我的浏览器本地 .NET 更新也出现此错误。清除缓存存储可以修复它,但不能解决此问题。

.net docker nginx blazor-webassembly
1个回答
0
投票

此错误是因为某些软件包未升级。更改项目版本后,您可以尝试删除 .bin .obj 文件夹并重建。
或者如果它不起作用,创建一个新的.Net8项目并将旧文件复制到其中肯定会解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.