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

似乎无法在任何地方find任何文章。 我基本上想要捕捉程序中的“无法find模块”错误,并可select要求安装它,但我似乎无法捕捉任何错误,甚至围绕我的require语句尝试/ 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 ,然后可选地从subprocess运行npm install ,然后与另一个subprocess运行node app 。 但感觉就像在一个app.js文件中做这件事一样简单

这对我来说很好,因为你有它。 你确定没有node_modules/express文件夹在文件系统上面的某个地方需要find吗? 尝试这样做是为了清楚发生了什么事情:

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