如何检查模块是否存在,如果存在加载?

我需要检查某个path下是否存在文件/(自定义)模块js。 我试过

var m = require('/home/test_node_project/per');
但是当path中没有per.js时会抛出错误。 我想与fs检查,如果文件存在,但我不想添加'.js'作为后缀,如果有可能检查没有。 如何检查模块是否存在,如果存在加载?

Require是一个同步操作,所以你可以把它包装在try / catch中。

 try { var m = require('/home/test_node_project/per'); // do stuff } catch (ex) { handleErr(ex); } 

您可以尝试加载它,然后捕获它在加载失败时生成的exception:

 try { var foo = require("foo"); } catch (e) { if (e instanceof Error && e.code === "MODULE_NOT_FOUND") console.log("Can't load foo!"); else throw e; } 

你应该检查你得到的exception,以防万一它不仅仅是一个加载问题,而是其他事情正在进行。 避免误报和所有这一切。

您可以通过使用方法检查是否存在一个文件夹:

 var fs = require('fs'); if (fs.existsSync(path)) { // Do something } // Or fs.exists(path, function(exists) { if (exists) { // Do something } });