我可以在 node.js 中要求一个函数而不执行整个所需文件吗?

Posted

技术标签:

【中文标题】我可以在 node.js 中要求一个函数而不执行整个所需文件吗?【英文标题】:Can I require a function in node.js without executing the entire required file? 【发布时间】:2021-03-17 16:20:33 【问题描述】:

这是我第一次在这里提问。我有以下示例: export.js 文件包含一个函数和一些额外的代码行。在这种情况下,它只是一个日志:

//exporting.js
function add(a,b) 
return a+b;

console.log(add(5,8));
module.exports = add;

import.js 文件需要 add 函数,但在执行时它还会打印 exporting.js 中的日志

//import.js
adds = require('./exporting.js');
console.log(adds(1,2));

所以它最终打印出来了:

13
3

我想知道是否有一种方法可以在不执行所有必需文件的情况下要求一个函数。

我尝试将我的函数放在一个对象中,但它仍然会打印第一个日志。

希望你能帮助我,我没有找到任何相关的东西,如果这是一个菜鸟问题,对不起。

【问题讨论】:

不,你不能。否则,引擎如何知道您的文件正在导出什么?我在这里闻到了XY problem。为什么你想要代码而不是让它执行?也许我们可以为您指出更好的解决方案 【参考方案1】:

我想知道是否有一种方法可以在不执行所有必需文件的情况下要求一个函数。

不,你不能。使用 CommonJS 模块,您知道导出内容的唯一方法是运行文件并将其分配给 module.exports。如果不运行文件,就不会导出任何内容。

对此的设计解决方案是将您想要的导出函数单独移动到一个单独的模块中,该模块除了导出您的函数之外什么都不做。然后,您可以require() 该模块而不会加载该模块的任何副作用。

【讨论】:

以上是关于我可以在 node.js 中要求一个函数而不执行整个所需文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

通过http代理执行node js命令

Node.js 只执行了一个函数

如何让node.js中的线程休眠而不影响其他线程?

如何在 node.js 中获取目录大小而不递归遍历目录?

如何在浏览器中访问远程 node.js 应用程序,而不是在本地主机上

connection.query 不是一个函数 Node.js MySQL