如何在节点模块中访问具有相对path的文件?

我在node.js + expressbuild立一个应用程序,我得到一个文件目录错误。

我在/app/lib/tests文件夹中有一个名为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'); 

这个问题是它给我这个错误:

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文件目录传播到ajax.js?

提前致谢!

使用require.resolve()来parsing所需模块上下文中的path,并使用已parsing的path来访问文件系统:

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