I'm trying to make changes to module resolver so that instead of needing to use relative paths like
import config from '../../../config.cjs'
i could use
import config from '@root/config'
loader.js:
import { join } from 'node:path';
import { pathToFileURL } from 'url';
export async function resolve(specifier, context, defaultResolve) {
if (specifier.startsWith('@root')) {
const root = process.cwd()
const newSpecifier = pathToFileURL(join(root, specifier.slice(5))).href;
return defaultResolve(newSpecifier, context, defaultResolve)
}
return defaultResolve(specifier, context, defaultResolve)
}
i use
node --import ./loader.js --trace-warnings index.js
to run the project
i get the error
node:internal/modules/esm/resolve:839
throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@root/config.cjs' imported from /data/data/com.termux/files/home/d_bot/Commands/Slash Commands/Utilities/pnr.js
at packageResolve (node:internal/modules/esm/resolve:839:9)
at moduleResolve (node:internal/modules/esm/resolve:908:18)
at defaultResolve (node:internal/modules/esm/resolve:1038:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:554:12)
at ModuleLoader.resolve (node:internal/modules/esm/loader:523:25)
at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:246:38)
at ModuleJob._link (node:internal/modules/esm/module_job:126:49) {
code: 'ERR_MODULE_NOT_FOUND'
}
Node.js v22.8.0