2013-11-14 3 views
0

Я использую этот модуль для моего приложения на OpenShift, но когда это необходимо, чтобы выполнить функцию, которая проверяет, существует ли файл в папке Data appers ошибки:NodeJS фс модуль не работает в OpenShift

DEBUG: /var/lib/openshift/02A50df2XXYD46273d00FFG8/app-root/runtime/repo/server.js:164 
     fs.exists('$OPENSHIFT_HOMEDIR/app-root/data/' + user_ip, function(exis 
     ^

DEBUG: TypeError: Object #<Object> has no method 'exists' 

у меня требуют фс в коде сервера, и это в зависимости на package.json

EDIT: решаемые

Использование require('path') и path.exists() он работает хорошо.

ответ

1

fs.exists() устарел. Вместо этого используйте path.exists(). Для получения дополнительной информации о пути см. Модуль ядра path.

+0

Я пытался использовать path.exists, но когда функция выполняется, она возвращает следующую ошибку: path.exists ('$ OPENSHIFT_HOMEDIR/app-root/data /' + user_ip, function (существует) DEBUG: ReferenceError: путь не определенный – abaracedo

0

Совет:
Согласно API Docs http://nodejs.org/api/fs.html#fs_fs_exists_path_callback

fs.exists() является анахронизмом и существует только по историческим причинам. Там почти никогда не будет причины использовать его в своем коде.

В частности, проверка наличия файла перед его открытием - это анти-шаблон, который оставляет вас уязвимыми для условий гонки: другой процесс может удалить файл между вызовами fs.exists() и fs.open(). Просто откройте файл и обработайте ошибку, когда ее там нет.

Что касается вашей проблемы: Можете ли вы сделать другие звонки?

+0

Я пробовал использовать fs.open, и я могу использовать его. – abaracedo

+0

Тогда, если бы я был вами, я бы придерживался использования fs.open, поскольку он кажется лучшим вариантом. – niharvey

Смежные вопросы