如何访问节点模块中具有相对路径的文件

How to access a file with a relative path in a node module?

本文关键字:相对 路径 文件 模块 何访问 访问 节点      更新时间:2024-01-06

我正在node.js+express中构建一个应用程序,但我收到了一个文件目录错误。

我的/app/lib/tests文件夹中有一个名为ajax.js的测试文件。我的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 propogate转移到ajax.js?

提前感谢!

使用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);