Javascript 捕获node.js中需要模块的错误

Javascript 捕获node.js中需要模块的错误,javascript,node.js,error-handling,require,Javascript,Node.js,Error Handling,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,

在任何地方都找不到关于这个的文章。我基本上希望从程序中捕获“找不到模块”错误,并可以选择要求安装它,但即使使用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\u模块
,然后从子进程运行
npm install
,然后与另一个子进程一起运行
node app
。但是感觉在一个app.js文件中完成这项工作会更容易,这个文件对我来说很好。您确定在您上方的文件系统中没有需要查找的
node\u 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
}

为确保正确,请确保仅捕获给定模块的模块未找到错误:

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;
    }

}

require
本身表明此模块对于应用程序的运行至关重要<代码>找不到模块是一条不言自明的故障消息(如果您要求)。作为开发人员,如果您希望其他人使用您的应用程序,您有责任将所有依赖项包含到您的软件包中。@Amberlamps通常最好不要将依赖项作为软件包的一部分提供给应用程序,而是在使用时将其下载。以避免提供陈旧/过时的模块,并避免浪费空间。这就是
package.json
npm安装的目的。我寻找这个解决方案是为了使我的应用程序尽可能的用户友好和自动化。我不知道我是怎么搞砸的,但我删除了node_modules文件夹,现在它似乎工作得很好。谢谢我会接受你的回答,因为你提醒我重试并修复它。