반응형
node.js의 require () 모듈에서 발생한 오류 처리
존재하지 않는 모듈을 require ()하려고 할 때 내 코드에 약간의 걸림돌이 있습니다. 코드는 디렉토리를 반복 var appname = require('path')
하고 각 폴더에서 수행합니다. 이것은 적절하게 구성된 모듈에 대해 작동하지만 Error: Cannot find module
루프가 모듈이 아닌 경우 발생합니다.
이 오류를 전체 프로세스를 중지시키는 대신 우아하게 처리 할 수 있기를 원합니다. 요컨대, 어떻게 오류가 발생 require()
합니까?
감사!
try / catch 블록이 이에 대한 트릭을 수행하는 것처럼 보입니다.
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)
}
주어진 경로가 존재하지 않으면 require ()는 코드 속성이 'MODULE_NOT_FOUND'로 설정된 오류를 발생시킵니다.
https://nodejs.org/api/modules.html#modules_file_modules
따라서 try catch 블록에서 요구 사항을 확인하고 error.code == 'MODULE_NOT_FOUND'
var m;
try {
m = require(modulePath);
} catch (e) {
if (e.code !== 'MODULE_NOT_FOUND') {
throw e;
}
m = backupModule;
}
래퍼 기능 사용 :
function requireF(modulePath){ // force require
try {
return require(modulePath);
}
catch (e) {
console.log('requireF(): The file "' + modulePath + '".js could not be loaded.');
return false;
}
}
용법:
requireF('./modules/non-existent-module');
물론 OP 답변을 기반으로
존재하지 않는 파일에 문제가있는 경우 다음을 수행해야합니다.
let fs = require('fs');
let path = require('path');
let requiredModule = null; // or a default object {}
let pathToModule = path.join(__dirname, /* path to module */, 'moduleName');
if (fs.existsSync(pathToModule)) {
requiredModule = require(pathToModule);
}
// This is in case the module is in node_modules
pathToModule = path.join(__dirname, 'node_modules', 'moduleName');
if (fs.existsSync(pathToModule)) {
requiredModule = require(pathToModule);
}
참고 URL : https://stackoverflow.com/questions/13197795/handle-errors-thrown-by-require-module-in-node-js
반응형
'Program Tip' 카테고리의 다른 글
왜 Emacs / Vim / Textmate입니까? (0) | 2020.12.09 |
---|---|
스타일이 %로 설정된 요소에서 너비를 픽셀 단위로 가져 오시겠습니까? (0) | 2020.12.08 |
R에서 renderText ()로 여러 줄의 텍스트 출력 Shiny (0) | 2020.12.08 |
부트 스트랩에 햄버거 메뉴를 추가하는 방법 (0) | 2020.12.08 |
Chrome 확장 프로그램 hint.js 및 ngHintModules (0) | 2020.12.08 |