Ответ 1
Требовать - это синхронная операция, поэтому вы можете просто обернуть ее в try/catch.
try {
var m = require('/home/test_node_project/per');
// do stuff
} catch (ex) {
handleErr(ex);
}
Мне нужно проверить, существует ли файл/(пользовательский) модуль js под некоторым путем. Я пробовал как
var m = require('/home/test_node_project/per');
но он выдает ошибку, когда нет пути per.js в пути.
Я думал проверить
fs
если файл существует, но я не хочу добавлять '.js'
в качестве суффикса, если это можно проверить без этого.
Как проверить node, если модуль существует и существует ли для загрузки?
Требовать - это синхронная операция, поэтому вы можете просто обернуть ее в try/catch.
try {
var m = require('/home/test_node_project/per');
// do stuff
} catch (ex) {
handleErr(ex);
}
Вы можете просто попытаться загрузить его, а затем поймать исключение, которое оно генерирует, если оно не загружается:
try {
var foo = require("foo");
}
catch (e) {
if (e instanceof Error && e.code === "MODULE_NOT_FOUND")
console.log("Can't load foo!");
else
throw e;
}
Вы должны изучить исключение, которое вы получаете, на случай, если это не просто проблема с загрузкой, но что-то еще происходит. Избегайте ложных срабатываний и всего этого.
Вы можете просто проверить, существует ли папка с помощью методов:
var fs = require('fs');
if (fs.existsSync(path)) {
// Do something
}
// Or
fs.exists(path, function(exists) {
if (exists) {
// Do something
}
});