{"record":{"id":"07227fc2b8c5e701","repo":"parcel-bundler/parcel","slug":"unsupported-architecture-on-linux-arch","errorCode":null,"errorMessage":"Unsupported architecture on Linux: ${arch}","messagePattern":"Unsupported architecture on Linux: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/core/rust/index.js","lineNumber":312,"sourceCode":"          }\n        }\n        break;\n      case 's390x':\n        localFileExisted = existsSync(\n          join(__dirname, 'parcel-node-bindings.linux-s390x-gnu.node'),\n        );\n        try {\n          if (localFileExisted) {\n            nativeBinding = require('./parcel-node-bindings.linux-s390x-gnu.node');\n          } else {\n            nativeBinding = require('@parcel/rust-linux-s390x-gnu');\n          }\n        } catch (e) {\n          loadError = e;\n        }\n        break;\n      default:\n        throw new Error(`Unsupported architecture on Linux: ${arch}`);\n    }\n    break;\n  default:\n    throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`);\n}\n\nif (!nativeBinding) {\n  if (loadError) {\n    throw loadError;\n  }\n  throw new Error(`Failed to load native binding`);\n}\n\nconst {\n  findAncestorFile,\n  findFirstFile,\n  findNodeModule,\n  hashString,","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/parcel-bundler/parcel/blob/59484858a1a0bcbb71f74088956bb437a2db6505/packages/core/rust/index.js#L294-L330","documentation":"Thrown by @parcel/rust's binding loader on Linux when process.arch is not among the prebuilt Linux targets (x64, arm64, arm, armv7, mips64el, ppc64, s390x, etc.). After handling each known arch with a try/require, the default branch rejects anything unrecognized.","triggerScenarios":"Running Parcel on Linux with a CPU arch for which no @parcel/rust-linux-* prebuilt exists — e.g. riscv64, loongarch64, or a misreported/unusual arch string.","commonSituations":"Emerging architectures (RISC-V, LoongArch), Alpine musl combos without a glibc variant, custom-compiled Node reporting nonstandard arches, or container runtimes that leak the wrong arch.","solutions":["Check `node -p process.arch` and compare against @parcel/rust supported Linux arches; switch to a supported one if possible.","Build the native binding from source for your arch via cargo + the @parcel/rust crate.","Run Parcel in a Docker image based on a supported arch (e.g. debian/amd64).","Report/await an upstream prebuilt for your arch."],"exampleFix":"# before: riscv64 Linux\n$ node -p process.arch\n'riscv64'  # no prebuilt -> error\n\n# after: run in an amd64 container\n$ docker run --platform linux/amd64 node:20 ...","handlingStrategy":"validation","validationCode":"import { platform, arch } from 'process';\nconst LINUX_SUPPORTED = new Set(['x64','arm64','arm','armv7','mips64el','ppc64','s390x']);\nif (platform === 'linux' && !LINUX_SUPPORTED.has(arch)) {\n  throw new Error(`Unsupported Linux arch ${arch}; see @parcel/rust prebuilt matrix.`);\n}","typeGuard":"const LINUX_SUPPORTED_ARCH = ['x64','arm64','arm','armv7','mips64el','ppc64','s390x'];\nfunction isSupportedLinuxArch(a: string): boolean {\n  return LINUX_SUPPORTED_ARCH.includes(a);\n}","tryCatchPattern":null,"preventionTips":["Match your runtime arch to the @parcel/rust prebuilt matrix.","For emerging arches (riscv64/loongarch64), build from source or use an amd64 container.","Verify node_modules contains @parcel/rust-linux-<arch> after install."],"tags":["native-binding","linux","architecture","parcel-rust"],"backgroundTag":null,"analyzedSha":"59484858a1a0bcbb71f74088956bb437a2db6505","analyzedAt":"2026-08-13T04:06:35.925Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}