feat(linter): added support to run in Node.JS legacy versions (#8648)

With a few adjustments It is possible to run _oxlint_ in projects which
use legacy **Node.js** versions, such as **8.x.x**. Basically this is
possible by removing spread operator in 'binpath' environment assemble
and changing a catch command to inform an error variable.

Without this modification, we got always this error:

```
node_modules/oxlint/bin/oxlint:23
  } catch {
          ^

SyntaxError: Unexpected token {
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Function.Module.runMain (module.js:605:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:575:3
```
This commit is contained in:
Luiz Felipe Weber 2025-01-23 10:17:48 -03:00 committed by GitHub
parent dcaebe69b1
commit 79ba9b5970
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 8 deletions

View file

@ -20,7 +20,7 @@ const isMuslFromFilesystem = () => {
const { readFileSync } = require("fs");
try {
return readFileSync("/usr/bin/ldd", "utf-8").includes("musl");
} catch {
} catch(_error) {
return null;
}
};
@ -91,9 +91,9 @@ const PLATFORMS = {
};
let binPath = (
PLATFORMS &&
PLATFORMS[platform] &&
PLATFORMS[platform][arch] &&
PLATFORMS &&
PLATFORMS[platform] &&
PLATFORMS[platform][arch] &&
PLATFORMS[platform][arch][isMusl() ? "musl" : "gnu"]
) || null;
@ -104,12 +104,11 @@ if (binPath) {
{
shell: false,
stdio: "inherit",
env: {
...env,
env: Object.assign({}, env, {
JS_RUNTIME_VERSION: version,
JS_RUNTIME_NAME: release.name,
NODE_PACKAGE_MANAGER: detectPackageManager(),
},
}),
}
);

View file

@ -20,7 +20,7 @@
"url": "https://github.com/sponsors/Boshen"
},
"engines": {
"node": ">=14.*"
"node": ">=8.*"
},
"files": [
"bin/oxlint",