首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tns build给出致命错误:无效标记-堆附近压缩限制分配失败- JavaScript堆内存不足

tns build给出致命错误:无效标记-堆附近压缩限制分配失败- JavaScript堆内存不足
EN

Stack Overflow用户
提问于 2019-08-02 17:44:39
回答 1查看 1K关注 0票数 0

我有一个代码共享角度8+原生脚本6项目。

当我执行tns构建时,它会失败,并显示以下跟踪信息。突出的一行是致命错误:无效标记-压缩到堆附近限制分配失败- JavaScript堆内存不足。

代码语言:javascript
复制
tns build android
Preparing project...
Hash: 29a5dd937bd8e4ccc851
Version: webpack 4.30.0
Time: 33853ms
Built at: 07/31/2019 4:34:20 PM
              Asset       Size   Chunks             Chunk Names
               0.js   29.9 KiB        0  [emitted]
               1.js     24 KiB        1  [emitted]
               2.js   33.5 KiB        2  [emitted]
          bundle.js    235 KiB   bundle  [emitted]  bundle
       package.json  133 bytes           [emitted]
         runtime.js   15.5 KiB  runtime  [emitted]  runtime
tns-java-classes.js    0 bytes           [emitted]
          vendor.js   37.1 MiB   vendor  [emitted]  vendor
Entrypoint bundle = runtime.js vendor.js bundle.js
[../$$_lazy_route_resource lazy recursive] ../$$_lazy_route_resource lazy namespace object 160 bytes {bundle} [built]
[./app.css] 450 bytes {bundle} [built]
[./app/app-routing.module.ts] 481 bytes {bundle} [built]
[./app/app.component.css] 275 bytes {bundle} [built]
[./app/app.component.html] 66 bytes {bundle} [built]
[./app/app.component.ts] 749 bytes {bundle} [built]
[./app/app.module.ts] 850 bytes {bundle} [built]
[./app/auth/auth.service.ts] 37 bytes {bundle} [built]
[./app/auth/firebase/firebase-auth.service.ts] 3.38 KiB {bundle} [built]
[./app/auth/helper/nav/nav-helper.service.ts] 776 bytes {bundle} [built]
[./app/auth/login/login.component.ts] 4.3 KiB {bundle} [built]
[./app/core/core.module.ts] 2.95 KiB {bundle} [built]
[./app/home/home.component.ts] 690 bytes {bundle} [built]
[./app/user-profile/user-profile.component.ts] 5.27 KiB {bundle} [built]
[./main.ts] 1.95 KiB {bundle} [built]
    + 837 hidden modules
Webpack compilation complete.
nativescript-plugin-firebase: building for same environment, not forcing prepare.
Project successfully prepared (android)
Configure firebase
Copy C:\Users\Robert\spynal\spynal-app\App_Resources\Android\google-services.json to C:\Users\Robert\spynal\spynal-app\platforms\android\app\google-services.json.
Building project...
Gradle build...
         + setting applicationId
         + applying user-defined configuration from C:\Users\Robert\spynal\spynal-app\App_Resources\Android\app.gradle
         Applying settings from C:\Users\Robert\spynal\spynal-app\App_Resources\Android\settings.json
         + using andorid X library androidx.legacy:legacy-support-v4:1.0.0
         + adding nativescript runtime package dependency: nativescript-optimized-with-inspector
         + adding aar plugin dependency: C:\Users\Robert\spynal\spynal-app\node_modules\nativescript-plugin-firebase\platforms\android\nativescript_plugin_firebase.aar
         + adding aar plugin dependency: C:\Users\Robert\spynal\spynal-app\node_modules\nativescript-unit-test-runner\platforms\android\nativescript_unit_test_runner.aar
         + adding aar plugin dependency: C:\Users\Robert\spynal\spynal-app\node_modules\tns-core-modules-widgets\platforms\android\widgets-release.aar
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF6479BC6AA v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4506
 2: 00007FF647997416 node::MakeCallback+4534
 3: 00007FF647997D90 node_module_register+2032
 4: 00007FF647CB189E v8::internal::FatalProcessOutOfMemory+846
 5: 00007FF647CB17CF v8::internal::FatalProcessOutOfMemory+639
 6: 00007FF647E97F94 v8::internal::Heap::MaxHeapGrowingFactor+9620
 7: 00007FF647E8EF76 v8::internal::ScavengeJob::operator=+24550
 8: 00007FF647E8D5CC v8::internal::ScavengeJob::operator=+17980
 9: 00007FF647E96317 v8::internal::Heap::MaxHeapGrowingFactor+2327
10: 00007FF647E96396 v8::internal::Heap::MaxHeapGrowingFactor+2454
11: 00007FF647FC0637 v8::internal::Factory::NewFillerObject+55
12: 00007FF64803D826 v8::internal::operator<<+73494
13: 000002F1F42DC5C1

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:runSbg'.
> Process 'command 'C:\Program Files\AdoptOpenJDK\jdk8u192-b12\bin\java.exe'' finished with non-zero exit value 134

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 47s
Command gradlew.bat failed with exit code 1

webpack的过程似乎成功地完成了,然而格雷德的建设在中途就结束了。

通过研究,我发现了node的--max-old-space-size选项。我只是不知道如何将它应用到gradle构建过程中,或者这是否是实际的问题。任何指导都是值得感谢的。

package.json

代码语言:javascript
复制
{
  "name": "spynal",
  "nativescript": {
    "id": "org.nativescript.spynal",
    "tns-android": {
      "version": "6.0.0"
    }
  },
  "version": "0.0.0",
  "scripts": {
    "build-prod-ngsw": "\"ng build --prod && npm run ngsw-config && npm run ngsw-copy\"",
    "compile": "\"for lang in en; do ng build --output-path=dist/$lang --prod --base-href=/$lang/ --i18n-file=src/locale/messages.$lang.xlf --i18n-format=xlf --i18n-locale=$lang; done\"",
    "coverage": "\"ng test --watch=false --code-coverage\"",
    "docs": "\"compodoc -p tsconfig.json\"",
    "i18n": "\"ng xi18n\"",
    "ng": "ng",
    "ngsw-config": "\"ngsw-config dist ngsw-config.json\"",
    "ngsw-copy": "\"cp ./node_modules/@angular/service-worker/ngsw-worker.js dist/\"",
    "serve-docs": "\"compodoc -s -r 4300\"",
    "serve-prod-ngsw": "\"npm run build-prod-ngsw && http-server dist -p 8000\"",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "android": "tns run android --bundle",
    "ios": "tns run ios --bundle",
    "mobile": "tns run --bundle",
    "preview": "tns preview --bundle",
    "storybook": "start-storybook -p 6006",
    "build-storybook": "build-storybook"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "8.0.2",
    "@angular/cdk": "^8.0.1",
    "@angular/common": "8.0.2",
    "@angular/compiler": "8.0.2",
    "@angular/core": "8.0.2",
    "@angular/fire": "^5.2.1",
    "@angular/flex-layout": "^8.0.0-beta.26",
    "@angular/forms": "8.0.2",
    "@angular/material": "~8.0.1",
    "@angular/platform-browser": "8.0.2",
    "@angular/platform-browser-dynamic": "8.0.2",
    "@angular/router": "8.0.2",
    "@angular/service-worker": "^8.0.2",
    "@angular/http": "8.0.0-beta.10",
    "bitmovin-player": "^8.10.0",
    "core-js": "^3.1.3",
    "dashjs": "^2.9.3",
    "firebase": "^6.2.0",
    "firebase-tools": "^7.0.0",
    "fuzzy": "^0.1.3",
    "generate-json": "^0.2.2",
    "hammerjs": "^2.0.8",
    "inquirer-autocomplete-prompt": "^1.0.1",
    "nativescript-angular": "^8.0.1",
    "nativescript-plugin-firebase": "9.0.2",
    "nativescript-theme-core": "~1.0.4",
    "nativescript-unit-test-runner": "^0.7.0",
    "ng-momentum": "^0.0.24",
    "ngx-dropzone": "^1.2.0",
    "reflect-metadata": "~0.1.12",
    "rx-player": "^3.13.0",
    "rxjs": "^6.5.2",
    "tns-core-modules": "~6.0.0",
    "tslib": "^1.9.0",
    "typescript-collections": "^1.3.2",
    "videogular2": "^6.4.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.800.0",
    "@angular/cli": "^8.0.3",
    "@angular/compiler-cli": "8.0.2",
    "@nativescript/schematics": "~0.6.0",
    "@storybook/addon-actions": "^5.1.9",
    "@storybook/addon-links": "^5.1.9",
    "@storybook/addon-notes": "^5.1.9",
    "@storybook/addons": "^5.1.9",
    "@storybook/angular": "^5.1.9",
    "@storybook/cli": "^5.1.9",
    "@types/core-js": "^2.5.1",
    "@types/jasmine": "3.3.13",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~12.0.8",
    "axios": "^0.19.0",
    "codelyzer": "^5.0.1",
    "jasmine-core": "~3.4.0",
    "jasmine-marbles": "^0.6.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "4.2.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "2.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "karma-nativescript-launcher": "0.4.0",
    "karma-webpack": "4.0.2",
    "nativescript-dev-webpack": "~1.0.0",
    "ng-mocks": "^8.1.0",
    "ngx-schematics-for-storybook": "^0.2.2",
    "node-fetch": "^2.6.0",
    "rxjs-spy": "^7.5.1",
    "ts-node": "~8.3.0",
    "tslint": "~5.17.0",
    "typescript": "3.4.5",
    "wait-for-expect": "^1.2.0"
  }
}

tsconfig.tns.json

代码语言:javascript
复制
{
    "extends": "./tsconfig",
    "compilerOptions": {
        "module": "esnext",
        "moduleResolution": "node"
    }
}

tsconfig.json

代码语言:javascript
复制
{
    "compileOnSave": false,
    "compilerOptions": {
        "downlevelIteration": true,
        "importHelpers": true,
        "outDir": "./dist/out-tsc",
        "declaration": false,
        "module": "esnext",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es2015",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2017",
            "dom",
            "es6",
            "es2015.iterable"
        ],
        "baseUrl": ".",
        "paths": {
            "~/*": [
                "src/*"
            ]
        }
    },
    "exclude": [
        "**/*.tns.ts",
        "**/*.android.ts",
        "**/*.ios.ts",
        "**/*.spec.ts",
        "**/*.stories.ts"
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-06 19:04:08

尝试使用此命令删除node_modules中的致命错误。

代码语言:javascript
复制
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57323893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档