Azure 构建上的 JavaScript 堆内存不足

C1X*_*C1X 7 azure node.js aspnetboilerplate ng-build

我将 aspnetboilerplate 与 Angular 和 .NET Core 一起使用。当我尝试在 Azure 上部署应用程序时,它显示:

致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足

这是我的天蓝色管道:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '12.x'
  displayName: 'Install Node.js'

- script: |
    npm install -g @angular/cli
    npm install
    npm run build-prod
    ng build --c=production 
  displayName: 'npm install and build'

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)/dist'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
    CleanTargetFolder: true
    OverWrite: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
Run Code Online (Sandbox Code Playgroud)

并在 package.json 文件中添加了build-prod属性。

"scripts": {
    "ng": "ng",
    "start": "ng serve --host 0.0.0.0 --port 4200",
    "hmr": "ng serve --host 0.0.0.0 --port 4200 --hmr",
    "test": "ng test",
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor",
    "lint": "tslint --force --project src/tsconfig.json src/**/*.ts -t verbose",
    "build-prod": "node --max-old-space-size=8000 ./node_modules/@angular/cli/bin/ng"
  },
Run Code Online (Sandbox Code Playgroud)

小智 11

Azure DevOps 中的 Azure Pipeline 解决方案:

- task: PowerShell@2
  displayName: Build
  env:
    NODE_OPTIONS: --max_old_space_size=16384
Run Code Online (Sandbox Code Playgroud)

在构建任务中设置环境变量NODE_OPTIONS的值。--max_old_space_size=16384


C1X*_*C1X 1

解决方案:

管道.yml

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '12.x'
  displayName: 'Install Node.js'

- script: |
    npm install -g @angular/cli
    npm install
    npm run build-prod
  displayName: 'npm install and build'

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)/dist'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
    CleanTargetFolder: true
    OverWrite: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
Run Code Online (Sandbox Code Playgroud)

包.json

"scripts": {
    "ng": "ng",
    "start": "ng serve --host 0.0.0.0 --port 4200",
    "hmr": "ng serve --host 0.0.0.0 --port 4200 --hmr",
    "test": "ng test",
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor",
    "lint": "tslint --force --project src/tsconfig.json src/**/*.ts -t verbose",
    "build-prod": "node --max-old-space-size=8000 ./node_modules/@angular/cli/bin/ng build --configuration=production"
  },
Run Code Online (Sandbox Code Playgroud)

构建大约需要 30 分钟..但这是另一个已知问题