注入的主脚本中的 require(id) 不是基于文件的
【require(id) in the injected main script is not file based】
require() 在注入的主脚本中与非注入模块可用的 require() 不同。它也没有非注入 require() 的任何属性,除了 require.main。它只能用于加载内置模块。尝试加载只能在文件系统中找到的模块将会抛出错误。
用户可以不依赖基于文件的 require(),而是将他们的应用打包成一个独立的 JavaScript 文件,然后注入到可执行文件中。这也确保了依赖图更加确定性。
【Instead of relying on a file based require(), users can bundle their
application into a standalone JavaScript file to inject into the executable.
This also ensures a more deterministic dependency graph.】
但是,如果仍然需要基于文件的 require(),也可以实现:
【However, if a file based require() is still needed, that can also be achieved:】
const { createRequire } = require('node:module');
require = createRequire(__filename);