似乎无法在任何地方找到任何文章。我基本上想从程序中捕获“无法找到模块”错误,并可选择安装它,但我似乎无法捕获任何错误,即使在我的require语句中使用try / catch也是如此。这甚至可能吗?我没有在任何地方看到它。
例如:
try {
var express = require('express');
} catch (err){
console.log("Express is not installed.");
//proceed to ask if they would like to install, or quit.
//command to run npm install
}
我认为这可以使用单独的.js启动文件来完成,而不需要任何第三方要求,只需使用fs
检查node_modules
,然后可以选择从子项运行npm install
进程,然后与另一个孩子一起运行node app
。但感觉在单个app.js文件中执行此操作会更容易
答案 0 :(得分:18)
为了使其正确,请确保仅为给定模块捕获 Module not found 错误:
try {
var express = require('express');
} catch (e) {
if (e.code !== 'MODULE_NOT_FOUND') {
// Re-throw not "Module not found" errors
throw e;
}
if (e.message.indexOf('\'express\'') === -1) {
// Re-throw not found errors for other modules
throw e;
}
}
答案 1 :(得分:8)
对你而言,这对我来说很好。你确定文件系统中的上方某处没有node_modules/express
文件夹需要查找吗?尝试这样做是为了清楚发生了什么:
try {
var express = require('express');
console.log("Express required with no problems", express);
} catch (err){
console.log("Express is not installed.");
//proceed to ask if they would like to install, or quit.
//command to run npm install
}