diff --git a/src/bindings/utils/compileLLamaCpp.ts b/src/bindings/utils/compileLLamaCpp.ts index ab61644f..4e3841fc 100644 --- a/src/bindings/utils/compileLLamaCpp.ts +++ b/src/bindings/utils/compileLLamaCpp.ts @@ -382,44 +382,54 @@ function getPrebuiltBinariesPackageDirectoryForBuildOptions(buildOptions: BuildO } } + async function loadModule(modulePath: string) { + if (typeof require !== "undefined" && typeof module !== "undefined" && module.exports) { + // CommonJS + return require(modulePath); + } else { + // ESM + return import(modulePath); + } + } + if (buildOptions.platform === "mac") { if (buildOptions.arch === "arm64" && buildOptions.gpu === "metal") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/mac-arm64-metal")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/mac-arm64-metal")); else if (buildOptions.arch === "x64" && buildOptions.gpu === false) // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/mac-x64")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/mac-x64")); } else if (buildOptions.platform === "linux") { if (buildOptions.arch === "x64") { if (buildOptions.gpu === "cuda") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-x64-cuda")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/linux-x64-cuda")); else if (buildOptions.gpu === "vulkan") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-x64-vulkan")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/linux-x64-vulkan")); else if (buildOptions.gpu === false) // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-x64")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/linux-x64")); } else if (buildOptions.arch === "arm64") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-arm64")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/linux-arm64")); else if (buildOptions.arch === "arm") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/linux-armv7l")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/linux-armv7l")); } else if (buildOptions.platform === "win") { if (buildOptions.arch === "x64") { if (buildOptions.gpu === "cuda") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/win-x64-cuda")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/win-x64-cuda")); else if (buildOptions.gpu === "vulkan") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/win-x64-vulkan")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/win-x64-vulkan")); else if (buildOptions.gpu === false) // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/win-x64")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/win-x64")); } else if (buildOptions.arch === "arm64") // @ts-ignore - return getBinariesPathFromModules(() => import("@node-llama-cpp/win-arm64")); + return getBinariesPathFromModules(() => loadModule("@node-llama-cpp/win-arm64")); } return null;