GOOGLE ADS

понедельник, 9 мая 2022 г.

Что может вызвать «TypeError: (0, d.__decorate) не является функцией» угловой функции внутри контейнера докеров?

Я создаю веб-приложение. Внешний интерфейс выполнен в angular, а внутренний — в.Net Core.

В настоящее время я делаю следующее, чтобы создать свой окончательный образ докера:


  1. Создание углового приложения

  2. Скопируйте встроенные угловые файлы в wwwroot ядра asp.net.

  3. Создание основного приложения asp.net

  4. Публикация основного приложения asp.net

  5. Копирование результата публикации внутри образа докера.


Вот мой текущий файл докеров:

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в wwwroot моего ядра asp.net работает в режиме отладки

  4. Публикация основного приложения asp.net (с заполненным wwwroot) также работает

  5. When I try to access to each individual file present in my npm build folder, it seems to be accessible(not sure, because names have this number that is not exactly the same)

  6. If I deleted nodes_modules, packages-lock.json and run npm install and npm run build, it also works

  7. I deleted the angular app, created another one, run the whole docker build, it works.

  8. I tried to change node to the version I'm using on my computer(node 16.14)


Edit
I started to remove everything from my app to see when it starts working again. It appears that once I remove my State(s) of NgxsModule.forFeature([]), it works.

So basically, if I've a module with:
NgxsModule.forFeature([]) It works, but NgxsModule.forFeature([UiState]) doesn't, even if UiState is almost empty:

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

I'm kind of desperate, any idea what could cause this error?


Solution of the problem

Я не совсем уверен, что сделал трюк, но я, наконец, решил это. Что я сделал:

  • У меня было несколько пакетов ngxs, которые назывались зависимостями разработчика И зависимостями (с другой версией), я оставил только один в зависимостях.

  • В моем tsconfig.json у меня были пути, указанные для «tslib» (к nodes_modules). Я помню, что добавил его, но не помню почему, я думаю, что в какой-то момент у меня возникла ошибка компиляции, и я нашел на SO это решение. Я удалил этот путь для tslib, что, вероятно, решило проблему.
  • Комментариев нет:

    Отправить комментарий

    Laravel Datatable addColumn returns ID of one record only

    Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...