如何访问节点模块中具有相对路径的文件?
How to access a file with a relative path in a node module?
我正在 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 的文件目录传播到 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);
我正在 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 的文件目录传播到 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);