Публикация Vue.js + ASP.NET Core в Azure

Я хочу развернуть свое приложение ASP.NET Core + Vue.js в Службе приложений Azure с настроенной учетной записью CI/CD GitHub. Я следовал руководству Microsoft: https://learn.microsoft.com/en-us/visualstudio/javascript/tutorial-asp-net-core-with-vue?view=vs-2022#publish-the-project

Я сделал все, как они сказали, но на этапе публикации при отправке репозитория на GitHub столкнулся с ошибкой:

 > [email protected] build
vue-cli-service build

  'vue-cli-service' is not recognized as an internal or external command,
  operable program or batch file.
C:\Users\runneradmin.nuget\packages\microsoft.visualstudio.javascript.sdk\0.5.74-alpha\Sdk\Sdk.targets(171,9): error MSB3073: The command "npm run build" exited with code 1. [D:\a\ThatsTime\ThatsTime\vueapp\vueapp.esproj]
Error: Process completed with exit code 1.

скриншот ошибки

вот содержимое vueapp.esproj:

<Project Sdk = "Microsoft.VisualStudio.JavaScript.Sdk/0.5.74-alpha">
  <PropertyGroup>
    <StartupCommand>npm run serve</StartupCommand>
    <JavaScriptTestRoot>.\</JavaScriptTestRoot>
    <JavaScriptTestFramework>Jest</JavaScriptTestFramework>
    <!-- Command to run on project build -->
    <BuildCommand></BuildCommand>
    <!-- Command to create an optimized build of the project that's ready for publishing -->
    <ProductionBuildCommand>npm run build</ProductionBuildCommand>
    <!-- Folder where production build objects will be placed -->
    <BuildOutputFolder>$(MSBuildProjectDirectory)\..\webapi\wwwroot</BuildOutputFolder>
  </PropertyGroup>
</Project>

вот содержимое webapi.csproj:

<Project Sdk = "Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <EnableSdkContainerSupport>true</EnableSdkContainerSupport>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include = "Models\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include = "Microsoft.AspNetCore.Authentication.JwtBearer" Version = "7.0.17" />
    <PackageReference Include = "Microsoft.IdentityModel.Tokens" Version = "7.5.0" />
  </ItemGroup>
  <ItemGroup>
      <ProjectReference Include = "..\vueapp\vueapp.esproj">
          <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
      </ProjectReference>
  </ItemGroup>
</Project>

пакет.json:

  "name": "vueapp",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "node aspnetcore-https.js && vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@vueuse/components": "^10.9.0",
    "@vueuse/core": "^10.9.0",
    "core-js": "^3.8.3",
    "jest": "^29.7.0",
    "jest-editor-support": "^31.1.2",
    "vue": "^3.2.13",
    "vue-router": "^4.3.0"
  }

Я также пытался выполнить развертывание с помощью веб-приложения и хранилища BLOB-объектов Azure, но ничего не вышло. Можете ли вы помочь мне решить проблему или, может быть, дать несколько рекомендаций, как развернуть это другим способом?

вам либо не хватает «установки npm», либо vue и @vue/cli в качестве зависимостей. Я бы, наверное, запустил npm install -g vue и npm install -g @vue/cli в отдельной задаче сценария перед публикацией.

Thomas 28.03.2024 14:07

@Томас Как я могу это сделать? Писать ли мне эту команду в файле .yml или в чем-то еще?

Osminogka 28.03.2024 14:18

@Osminogka, не могли бы вы убедиться, что ваш yml-файл рабочего процесса GitHub содержит эту строку или нет: - name: Install Vue CLI run: npm install -g @vue/cli

Jalpa Panchal 29.03.2024 08:12

@JalpaPanchal github.com/Osminogka/ThatsTime вот мой репозиторий этого проекта на GitHub

Osminogka 29.03.2024 08:33

я проверил файл yml, который находится по адресу .github/workflows/ThatsTime.yml. Я хотел бы предложить вам добавить эту строку кода - name: Install dependencies run: npm install - name: Install Vue CLI run: npm install -g @vue/cli перед строкой - name: Build.

Jalpa Panchal 29.03.2024 08:53

@JalpaPanchal Как вы думаете, он автоматически обработает эту команду в правильном каталоге, где находится package.json?

Osminogka 29.03.2024 09:48

@JalpaPanchal Не удалось установить зависимости с помощью команды «npm install». Сообщение об ошибке: npm ERR! путь D:\a\ThatsTime\ThatsTime/package.json npm ОШИБКА! ошибся -4058 нм ОШИБКА! enoent ENOENT: нет такого файла или каталога, откройте «D:\a\ThatsTime\ThatsTime\package.json» npm ERR! enoent Это связано с тем, что npm не может найти файл.

Osminogka 29.03.2024 09:58

Вы получаете ту же ошибку локально?

Pravallika KV 29.03.2024 13:06

@PravallikaKV Я могу опубликовать этот проект в локальной папке и разместить его на своем локальном сервере IIS, и он работает отлично

Osminogka 29.03.2024 15:17

@Osminogka, я проверил твой репозиторий на GitHub. исходя из этого, вы могли бы добавить эту строку вместо непосредственного добавления команды установки: - имя: Установить зависимости Vue.js, запустить: рабочий каталог npm install: ${{ env.VUE_APP_DIR }} - имя: Запустить проект сборки Vue.js: Рабочий каталог npm run build: ${{ env.VUE_APP_DIR }}. Обязательно замените 'vueapp' фактическим путем к вашему приложению Vue.js. env: VUE_APP_DIR: 'vueapp' # Установите здесь каталог вашего приложения Vue

Jalpa Panchal 01.04.2024 10:42
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
10
251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

«vue-cli-service» не распознается как внутренняя или внешняя команда, действующая программа или командный файл.

Чтобы устранить эту ошибку, вам необходимо установить зависимости @Thomas и @Jalpa Panchal, упомянутые в комментариях.

Сообщение об ошибке: npm ERR! путь D:\a\ThatsTime\ThatsTime/package.json npm ОШИБКА! ошибся -4058 нм ОШИБКА! enoent ENOENT: нет такого файла или каталога, откройте «D:\a\ThatsTime\ThatsTime\package.json»

Эта ошибка связана с тем, что рабочий процесс не может указать package.json в корневом каталоге, поскольку package.json находится в подпапке vueapp.

Чтобы устранить эту ошибку, добавьте следующую конфигурацию в рабочий процесс:

- name : Install Dependencies
  run  : |
          cd vueapp
          npm install

Рабочий процесс GitHub:

name: Build and deploy ASP.Net Core app to Azure Web App - vueaspnet

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up .NET Core
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '7.x'
          include-prerelease: true
          
      - name: Install Dependencies
        run : | 
                cd vueapp
                npm install
               
      - name: Build with dotnet
        run: dotnet build --configuration Release

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: .net-app
          path: ${{env.DOTNET_ROOT}}/myapp

  deploy:
    runs-on: windows-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    
    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: .net-app
      
      - name: Deploy to Azure Web App
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'vueaspnet'
          slot-name: 'Production'
          package: .
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D9811244A05F468CBA7E827C65C83215 }}

Спасибо, все зависимости успешно установлены. Однако сейчас я столкнулся с другой проблемой. Не могли бы вы помочь мне с настройкой сертификата HTTPS для соединения между Vue.js и ASP.NET? Я сталкиваюсь с ошибкой, которая гласит: «Ошибка: ENOENT: нет такого файла или каталога, откройте «C:\Users\runneradmin\AppData\Roaming\ASP.NET\https\vueapp.k‌​ey»

Osminogka 02.04.2024 14:38

Другие вопросы по теме