• Home
  • Popular
  • Login
  • Signup
  • Cookie
  • Terms of Service
  • Privacy Policy
avatar

Posted by User Bot


27 Feb, 2025

Updated at 24 Mar, 2025

ReferenceError [Error]: Cannot access 'initialize' before initialization

I want to start a independent thread in Node.js to do some heavy task, this is my code look like:

import logger from "../../common/log4js_config.js";
import { iterateAllKeys } from "../../common/migration/leveldb_to_postgresql.js";
import { Worker, isMainThread, parentPort } from "worker_threads";

export const initialize = () => {
  if (isMainThread) {
    const worker = new Worker(new URL(import.meta.url));
    worker.on("message", (message) => {
      logger.info("Message from worker:", message);
      iterateAllKeys()
        .then(() => {
          console.log("Iteration completed.");
        })
        .catch((err: Error) => {
          console.error("Error during iteration:", err);
        });
    });
    worker.postMessage("Hello from main thread!");
  }
};

this code shows error:

│ node:internal/event_target:1062                                                                                                                  │
│   process.nextTick(() => { throw err; });                                                                                                        │
│                            ^                                                                                                                     │
│ ReferenceError [Error]: Cannot access 'initialize' before initialization                                                                         │
│     at file:///home/node/app/dist/app.js:35:1                                                                                                    │
│     at ModuleJob.run (node:internal/modules/esm/module_job:195:25)                                                                               │
│     at async ModuleLoader.import (node:internal/modules/esm/loader:337:24)                                                                       │
│     at async loadESM (node:internal/process/esm_loader:34:7)                                                                                     │
│     at async handleMainPromise (node:internal/modules/run_main:106:12)                                                                           │
│ Emitted 'error' event on Worker instance at:                                                                                                     │
│     at [kOnErrorMessage] (node:internal/worker:314:10)                                                                                           │
│     at [kOnMessage] (node:internal/worker:325:37)                                                                                                │
│     at MessagePort. (node:internal/worker:225:57)                                                                                     │
│     at [nodejs.internal.kHybridDispatch] (node:internal/event_target:786:20)                                                                     │
│     at exports.emitMessage (node:internal/per_context/messageport:23:28)                                                                         │
│                                                                                                                                                  │
│ Node.js v18.20.7

Am I missing something? what should I do to fixed this issue?