FileSync找不到我的文件

And*_*iga 5 ssl node.js

FileySync找不到找到的其他模块的子文件夹(我也尝试过相同的文件夹)中的文件。

资料夹结构

console.log __dirname
https = require('https')
fs = require('fs')
sslOptions = {
  key: fs.readFileSync('./config/ssl/server.key'),
  cert: fs.readFileSync('./config/ssl/server.crt'),
  ca: fs.readFileSync('./config/ssl/ca.crt'),
  requestCert: true,
  rejectUnauthorized: false
}
secureServer = https.createServer(sslOptions,app).listen('3030', () ->
  console.log("Secure Express server listening on port 3030")
)

configDB = require('./config/database.js')(environment)
Run Code Online (Sandbox Code Playgroud)

找到database.js,没有找到ssl文件。记录的目录名:

---my project folder--/.tmp/serve
Run Code Online (Sandbox Code Playgroud)

文件权限:

配置

-rw-r--r--  1 MasterG  staff   93 14 Apr 14:06 config.js
-rw-r--r--  1 MasterG  staff  526 14 Apr 14:06 database.js
drwxr-xr-x  6 MasterG  staff  204 14 Apr 13:51 ssl
Run Code Online (Sandbox Code Playgroud)

ssl

-rw-r--r--  1 MasterG  staff  912 14 Apr 14:06 ca.crt
-rw-r--r--  1 MasterG  staff  963 14 Apr 14:06 ca.key
-rw-r--r--  1 MasterG  staff  924 14 Apr 14:06 server.crt
-rw-r--r--  1 MasterG  staff  887 14 Apr 14:06 server.key
Run Code Online (Sandbox Code Playgroud)

错误:unction strWrapper(err,书面){^错误:

ENOENT, no such file or directory './config/server.key'
    at Error (native)
    at Object.fs.openSync (fs.js:502:18)
    at Object.fs.readFileSync (fs.js:354:15)
    at Object.<anonymous> (/Users/MasterG/Desktop/PROJEKTE/gideon/.tmp/serve/server.js:25:13)
    at Object.<anonymous> (/Users/MasterG/Desktop/PROJEKTE/gideon/.tmp/serve/server.js:76:4)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
Run Code Online (Sandbox Code Playgroud)

And*_*iga 5

sslOptions = {
  key: fs.readFileSync(__dirname + '/config/ssl/server.key'),
  cert: fs.readFileSync(__dirname + '/config/ssl/server.crt'),
  ca: fs.readFileSync(__dirname + '/config/ssl/ca.crt'),
  requestCert: true,
  rejectUnauthorized: false
}
Run Code Online (Sandbox Code Playgroud)

包含__dirname可以达到目的,这很奇怪,因为在该教程中,它似乎不需要以下内容即可:http ://greengeckodesign.com/blog/2013/06/15/creating-an-ssl-certificate-for-node-dot-js/

  • @RodrigoMedeiros错误。正如您所建议的,__dirname与cwd不同。__dirname提供当前模块正在运行的目录。在这种情况下,`module` =`database.js`。令人困惑的是,当在fs函数上使用./时,它隐含了cwd,而require()中的./隐含了__dirname。希望有道理。 (2认同)