有没有一种方法可以在一行中从 require 创建一个新的 Node 对象?

del*_*ttg 3 javascript require node.js

我们有一个 Node.js 小部件,可以像这样导出:

module.exports = ourWidget;

然后我将其导入到我们的 server.js 中,如下所示:

var ourWidget = require('./ourWidget');
var ow = new ourWidget;
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但是可以在一行中完成吗?例如:

var ow = new (require('./ourWidget'));
Run Code Online (Sandbox Code Playgroud)

这不起作用,我也尝试过:

var ow = new (require('./ourWidget')());

两者都类似于这个问题中的代码: How does require work with new operator in node.js? ,但是当我尝试运行代码时,两者都失败了。

djf*_*dev 5

您可以通过将函数调用移至包装括号之外来实现此目的:

var ow = new (require('./ourWidget'))()
Run Code Online (Sandbox Code Playgroud)

但请记住,您现在无法访问原始的小部件构造函数(在您的情况下,这可能是坏事,也可能不是坏事)。