fix: isolate task node dependencies

This commit is contained in:
whyour
2026-05-24 01:40:07 +08:00
parent bb6d436c19
commit 57d58c871e
5 changed files with 48 additions and 14 deletions
+31
View File
@@ -1,7 +1,36 @@
const { execSync } = require('child_process');
const Module = require('module');
const path = require('path');
const client = require('./client.js');
require(`./env.js`);
function preferGlobalNodeModules() {
const { QL_NODE_GLOBAL_PATH } = process.env;
if (!QL_NODE_GLOBAL_PATH || Module._qlGlobalPathPatched) {
return;
}
const originalResolveFilename = Module._resolveFilename;
Module._resolveFilename = function (request, parent, isMain, options) {
if (
!Module.builtinModules.includes(request) &&
!request.startsWith('node:') &&
!request.startsWith('.') &&
!path.isAbsolute(request)
) {
try {
return originalResolveFilename.call(this, request, parent, isMain, {
...options,
paths: [QL_NODE_GLOBAL_PATH],
});
} catch (error) {}
}
return originalResolveFilename.call(this, request, parent, isMain, options);
};
Module._qlGlobalPathPatched = true;
}
function expandRange(rangeStr, max) {
const tempRangeStr = rangeStr
.trim()
@@ -113,6 +142,8 @@ try {
return;
}
preferGlobalNodeModules();
process.on('SIGTERM', (code) => {
process.exit(15);
});