Поиск причины и исправление ошибки Error: ENOENT, open 'c:\Path\file.name' в NodeJS

NodeJS

Причина ошибки Error: ENOENT, open 'c:\Path\file.name' в NodeJS – это отсутствие файла указанного файла. Очень легко его воспроизвести на примере по работе с файловой системой 'fs'.

1. Сохраните файл example_log.txt с произвольным текстовым содержимым в директории C:\Sites\APISite\

2. Сохраните в файле js.js приведенный ниже код:

var fs = require('fs');
fs.readFile('example_log.txt', function (err, logData) {
// If an error occurred, throwing it will
  // display the exception and end our app.
  if (err) throw err;

// logData is a Buffer, convert to string.
  var text = logData.toString();
  console.log(text);
});

3. Запустите его из командной строки NodeJS следующей командой

node c:\Sites\APISite\js.js

Рис.1. Консоль команд NodeJS

Рис.1. Консоль команд NodeJS

 

В результате получите ошибку, сообщающую, что файл не найден.

Почему так? Для вас очевидно, что раз файлы находятся в одной директории, то путь можно не указывать. Но для выполняющей среды известен только путь, который запустился по умолчанию. Для пользователей Windows это будет "c:\Users\имя_пользователя". И работа будет проходить с этой директорией, а не с другой.

Есть как минимум 2 решения проблемы.

Решение 1. Перед запуском js файла перейти в ту директорию, где он сохранен, с помощью команды  "cd c:\Sites\APISite\"

Тогда запуск приложения будет осуществляться так (Рис.2):

node js.js

Рис.2. Смена директории и запуск скрипта в NodeJS

Рис.2. Смена директории и запуск скрипта в NodeJS

Решение 2. В коде файла js.js указать полный путь к открываемому файлу. Для NodeJS в Windows нужно указать путь так:

fs.readFile('c:/Sites/APISite/example_log.txt', function (err, logData)

 

var fs = require('fs');
fs.readFile('c:/Sites/APISite/example_log.txt', function (err, logData) {
// If an error occurred, throwing it will
  // display the exception and end our app.
  if (err) throw err;

// logData is a Buffer, convert to string.
  var text = logData.toString();
  console.log(text);
});

 

Такой код можно запускать из любой директории.

 


Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика