首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理node.js中的require()模块引发的错误

处理node.js中的require()模块引发的错误
EN

Stack Overflow用户
提问于 2012-11-02 23:02:06
回答 4查看 56.1K关注 0票数 73

在尝试使用不存在的require()模块时,我的代码中有一点小问题。代码循环遍历一个目录,并在每个文件夹上执行var appname = require('path')。这对适当配置的模块有效,但当循环遇到非模块时抛出:Error: Cannot find module

我希望能够优雅地处理这个错误,而不是让它停止我的整个过程。因此,简而言之,如何捕捉require()抛出的错误

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2012-11-04 07:48:52

看起来try/catch块在这方面做得很好,例如

代码语言:javascript
运行
复制
try {
 // a path we KNOW is totally bogus and not a module
 require('./apps/npm-debug.log/app.js')
}
catch (e) {
 console.log('oh no big error')
 console.log(e)
}
票数 65
EN

Stack Overflow用户

发布于 2016-08-11 08:04:27

如果给定的路径不存在,则require()将抛出错误,并将其代码属性设置为“MODULE_ not _FOUND”。

https://nodejs.org/api/modules.html#modules_file_modules

因此在try catch块中执行一个请求并检查error.code == 'MODULE_NOT_FOUND'

代码语言:javascript
运行
复制
var m;
try {
    m = require(modulePath);
} catch (e) {
    if (e.code !== 'MODULE_NOT_FOUND') {
        throw e;
    }
    m = backupModule;
}
票数 43
EN

Stack Overflow用户

发布于 2015-12-01 02:02:19

使用包装器函数:

代码语言:javascript
运行
复制
function requireF(modulePath){ // force require
    try {
     return require(modulePath);
    }
    catch (e) {
     console.log('requireF(): The file "' + modulePath + '".js could not be loaded.');
     return false;
    }
}

用法:

代码语言:javascript
运行
复制
requireF('./modules/non-existent-module');

当然是基于OP答案

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13197795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档