Node.js后端/服务器:不能在"新功能"实例中"要求"



我正在尝试在用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)

成功让它与nodeREPL 一起工作:

$ 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));

最新更新