场景是,我要为一个文件注入全局变量并且调试这个文件,代码如下:
demo.js
// describe是个全局变量,想在这打断点
describe();
main.js
function describe() {
// ...
}
const content = fs.readFileSync(demo, "utf-8");
// 注入全局变量describe
const globalFn = eval(`(function global(describe) {${content}})`);
globalFn.call(this, describe);
cli.js
require("../src/main.js").run(process.argv);
VSCode的debug配置
{
"version": "0.2.0",
"configurations": [
{
"name": "Test",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/scripts/cli.js",
"stopOnEntry": false,
"cwd": "${workspaceFolder}",
"runtimeArgs": ["--nolazy"],
"console": "integratedTerminal",
"sourceMaps": true
}
]
}
eval
过好像就没法调试,也没法优化,所以尽量不要使用。