6

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

在脚本中,我使用以下方式打开一些文件:

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

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

[mybashshell]$ 节点 server.js

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

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

它抱怨我的“cert_and_key_dev.pem”文件路径被破坏。

我没想到会发生这样的事情。我认为正在执行的脚本文件中使用的路径应该是相对于脚本文件的,而不是相对于我执行 bash shell 命令的位置。

有任何想法吗?

4

2 回答 2

16

将其放在脚本的开头。

process.chdir(__dirname);

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

有关该功能的更多信息,请阅读

于 2012-11-18T04:58:35.287 回答
7

或者

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

如果你不想cd因为任何原因。

于 2012-11-18T05:03:17.073 回答