从文件夹外部执行Node.js文件中断文件path

我有一个名为“server.js”的Node.js文件。

在脚本中,我打开一些文件,使用如下所示:

var certPem = fs.readFileSync('cert_and_key_dev.pem', encoding='ascii'); 

使用bash shell,如果我cd到server.js所在的目录,然后运行命令:

[mybashshell] $ node server.js

它工作,我没有错误。 服务器启动并运行。

现在,当我输出server.js文件所在的目录时,再次运行相同的shell命令来启动我的服务器。

它抱怨我的文件path到我的“cert_and_key_dev.pem”被打破。

我并不期待这样的事情发生。 我虽然正在执行的脚本文件中使用的path应该是相对于脚本文件,而不是执行我的bash shell命令的位置。

有任何想法吗?

把这个放在脚本的开头。

 process.chdir(__dirname); 

这会将进程的工作目录更改为正在执行的文件( __dirname )的目录path。

有关该函数的更多信息,请阅读。

要么

 var path = require('path'); var key = path.join(__dirname, 'cert_and_key_dev.pem'); var certPem = fs.readFileSync(key, encoding='ascii'); 

如果你不想以任何理由cd