我正在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');
这个问题是它给我发现了这个错误:
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?
提前致谢!
答案 0 :(得分: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);