2016-04-05 1 views
1

Я создаю приложение в node.js + express, и я получаю ошибку в файловой директории.Как получить доступ к файлу с относительным путем в модуле узла?

У меня есть тестовый файл под названием ajax.js в моей папке /app/lib/tests. Мой файл app.js находится в моем корне /app. Вот отрывок из моего app.js файла, который дает мне неприятность:

https.createServer({ 
    key: fs.readFileSync('./security/keys/localhost.key'), 
    cert: fs.readFileSync('./security/keys/localhost.crt') 
}, app).listen(https_port); 

В моем ajax.js файле я требую моего app.js файла:

var server = require('../../app'); 

Проблемы с этим он меня givng эта ошибка:

Error: ENOENT: no such file or directory, open './security/keys/localhost.key', который сообщает мне, что файловые каталоги не выстраиваются правильно. Мой ajax.js файл работает, если я изменю

Error: ENOENT: no such file or directory, open './security/keys/localhost.key'

в

Error: ENOENT: no such file or directory, open '../../security/keys/localhost.key'

Однако, это нарушило бы мое приложение в целом.

Есть ли способ, которым у меня может быть каталог файлов из app.js propogate to ajax.js?

Заранее благодарен!

+0

Что такое абсолютный путь к этому файлу './security/keys/localhost.key '? – Lewis

ответ

3

Использование require.resolve() разрешить путь в контексте необходимого модуля и использовать вычисленный путь для доступа к файловой системе:

https.createServer({ 
    key: fs.readFileSync(require.resolve('./security/keys/localhost.key')), 
    cert: fs.readFileSync(require.resolve('./security/keys/localhost.crt')) 
}, app).listen(https_port);