Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

未關閉
#125 2 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
25/100
Issue 類型
缺陷
描述清晰度
需要釐清
活躍度
停滯
技術堆疊
javascript, webpack

研究方向

從 workerize-loader!../../workers/headerWorker import、對應的 ../../workers/headerWorker 模組以及提供的 webpack 建置輸出開始;使用所示的 TypeScript/React 用法重現堆積失敗。完成的標準是判斷這種 loader 用法是否受支援,並記錄可重現的修正方式或明確的指引。

由索引模型根據 Issue 內容生成。

描述

Hi, I'm trying to use your package but I'm not able to make it work. If I remove my worker from the application compiles fine, once I uncomment the code I get the error message:

69% building 3094/3117 modules 23 active C:\Desarrollo\uiserpreco2\uiserpreco\node_modules\ts-loader\index.js!C:\Desarrollo\uiserpreco2\uiserpreco\src\app\components\Maintenance\Clients\ClientWizardRedirect.tsx
<--- Last few GCs --->

[7332:000001A3BF8073C0]   211369 ms: Mark-sweep (reduce) 2039.2 (2082.9) -> 2038.6 (2083.4) MB, 2201.3 / 0.0 ms  (average mu = 0.085, current mu = 0.013) allocation failure scavenge might not succeed
[7332:000001A3BF8073C0]   213807 ms: Mark-sweep (reduce) 2039.7 (2083.4) -> 2038.9 (2083.9) MB, 2432.5 / 0.0 ms  (average mu = 0.046, current mu = 0.002) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF6D0B9BD2F v8::internal::CodeObjectRegistry::~CodeObjectRegistry+112159
 2: 00007FF6D0B2CD66 v8::internal::WebSnapshotDeserializer::context_count+65430
 3: 00007FF6D0B2DC1D node::OnFatalError+301
 4: 00007FF6D1467BBE v8::Isolate::ReportExternalAllocationLimitReached+94
 5: 00007FF6D145283D v8::SharedArrayBuffer::Externalize+781
 6: 00007FF6D12D532C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1468
 7: 00007FF6D12D2662 v8::internal::Heap::CollectGarbage+3778
 8: 00007FF6D12D01B5 v8::internal::Heap::AllocateExternalBackingStore+1909
 9: 00007FF6D12F35D1 v8::internal::Factory::NewFillerObject+209
10: 00007FF6D1023175 v8::internal::DateCache::Weekday+1349
11: 00007FF6D14EFF01 v8::internal::SetupIsolateDelegate::SetupHeap+472849
12: 000001A3C26AA381

I'm using your package with path, not with webpack. And I'm using it like this:

I'm importing the worker in my class component like this:

import createFooWorker from 'workerize-loader!../../workers/headerWorker';
import * as headerWorker from '../../workers/headerWorker';
const workerHeader = createFooWorker<typeof headerWorker>();

and I'm using it like this:

componentWillUnmount() {
    workerHeader.terminate();
}

async handleCreateExcel() {
    const { excelData } = this.state;
    await workerHeader.getExcelData(excelData);
}

async getNotifications(emitLang = false) {
        if (!this.searchingNotifications) {
            this.searchingNotifications = true;
            updateTaskGridObs.send();
            await workerHeader.getNotifications().then((response: any) => {
                this.setState(
                    {
                        notifications: is.existy(response) && hasItems(response.Result) ? response.Result : [],
                    },
                    () => {
                        this.searchingNotifications = false;
                        if (emitLang) this.props.i18n.changeLanguage(this.state.selectedLang);
                    },
                );
            });
        }
}

I've defined the module package in my typings.d.ts like this (I've found this code looking the package isssues):

declare module 'workerize-loader!*' {
    type AnyFunction = (...args: any[]) => any;
    type Async<F extends AnyFunction> = (...args: Parameters<F>) => Promise<ReturnType<F>>;

    type Workerized<T> = Worker & { [K in keyof T]: T[K] extends AnyFunction ? Async<T[K]> : never };

    function createInstance<T>(): Workerized<T>;
    export = createInstance;
}

I've also tried to increase the memory with: SET NODE_OPTIONS=--max_old_space_size=8192, but didn't solve the problem.

I don't understand what I'm doing wrong,. any help will be apreciated. Thanks in advance

主要語言
JavaScript
星號
2.3k
分支
85
PR 合併指標
30 天內沒有已合併 PR

環境準備

這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

developit/workerize-loader 的其他 Issue

查看 developit/workerize-loader 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。