我正在尝试在用new Function
初始化的函数中使用require
。有没有办法允许字符串中的 require 语句
// test.js
let fnString = `
const os = require("os");
return os.platform();
`;
const fn = new Function(fnString);
console.log(fn());
运行文件test.js
:
$ node test.js
undefined:4
const os = require("os");
^
ReferenceError: require is not defined
at eval (eval at <anonymous> ({path}/test.js:8:12), <anonymous>:4:12)
at Object.<anonymous> ({path}/test.js:9:13)
成功让它与node
REPL 一起工作:
$ node
Welcome to Node.js v14.4.0.
Type ".help" for more information.
> f = new Function(`
const os = require("os");
return os.platform();
`);
> f()
'linux'
>
您可以将require
作为参数添加到函数中,并将其传递给函数,如下所示:
let fnString = `
const os = require("os");
return os.platform();
`;
const fn = new Function('require', fnString);
console.log(fn(require));