Подтвердить что ты не робот

Как проверить node, если модуль существует и существует ли для загрузки?

Мне нужно проверить, существует ли файл/(пользовательский) модуль js под некоторым путем. Я пробовал как

var m = require('/home/test_node_project/per');
но он выдает ошибку, когда нет пути per.js в пути. Я думал проверить  fs если файл существует, но я не хочу добавлять '.js' в качестве суффикса, если это можно проверить без этого. Как проверить node, если модуль существует и существует ли для загрузки?

4b9b3361

Ответ 1

Требовать - это синхронная операция, поэтому вы можете просто обернуть ее в try/catch.

try {
    var m = require('/home/test_node_project/per');
    // do stuff
} catch (ex) {
    handleErr(ex);
}

Ответ 2

Вы можете просто попытаться загрузить его, а затем поймать исключение, которое оно генерирует, если оно не загружается:

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

Вы должны изучить исключение, которое вы получаете, на случай, если это не просто проблема с загрузкой, но что-то еще происходит. Избегайте ложных срабатываний и всего этого.

Ответ 3

Вы можете просто проверить, существует ли папка с помощью методов:

var fs = require('fs');

if (fs.existsSync(path)) {
    // Do something
}

// Or

fs.exists(path, function(exists) {
    if (exists) {
        // Do something
    }
});