Есть две разные ситуации с одним и тем же кодом
var fs = require("fs");
var content = JSON.parse(fs.readFileSync('./config.json', "utf8"));
Без проблем запускается на одном компьютере.
А на втором выкидывает ошибку:
Error: ENOENT: no such file or directory, open './config.json' at Object.openSync (fs.js:436:3) at Object.readFileSync (fs.js:341:35) at Object. (—) at Module._compile (internal/modules/cjs/loader.js:688:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) at startup (internal/bootstrap/node.js:285:19)
Данная проблема решилась строками:
const config = path.join(__dirname, '/config.json');
const content = JSON.parse(fs.readFileSync(config, "utf8"));
Дело в точке, т.к. на разных системах это воспринимается по разному. В Node.js __dirname всегда находит каталог, в котором находится текущий исполняемый скрипт. Так что, если вы ввели __dirname в /d1/d2/myscript.js, то значение будет /d1/d2. В отличие . от этого, вы получаете каталог, с которого вы запускали node команду в окне терминала (т.е. в вашем рабочем каталоге). Исключение при использовании . с require(). Путь внутри require всегда относится к файлу, содержащему вызов require.
Помогла эта статья: Но сразу после запуска следующая ошибка:
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Object.createSecureContext (_tls_common.js:113:17)
at Server (_tls_wrap.js:868:27)
at new Server (https.js:62:14)
at Object.createServer (https.js:84:10)
at Object.<anonymous> (---)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
Однако, если указывать подобный образом, то всё работает и программа успешно запускается.
const conf = https.createServer({
cert: /.../.../certificat.txt,
key: /../../keys.txt
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть такой код игры крестики нолики, но здесь каждый выбор клетки делаю я сам, а каким образом можно сделать, чтобы против меня компьютер играл?...
Как при нажатии по HTML-блоку перейти на другую страницу? Не используя тег <a>