从相对路径运行时,Nodejs找不到包含

时间:2016-01-23 23:38:55

标签: node.js directory

我在 the_second_folder 中有nodejs代码,但我想从根文件夹运行它。当我从the_second_folder 运行代码时,我没有错误,但是当我从根文件夹运行代码时,由于包含,nodejs崩溃了。这是代码:

require('rootpath')(); //does not work

var file_to_include = "file.js";
eval(fs.readFileSync(file_to_include)+'');

这仅适用于我从 the_second_folder (它所在的位置)运行代码但在从根文件夹(文件夹树中为-1)运行时失败的情况。 错误正是包含file_to_include

我想知道的是,即使从根文件夹调用,我如何在相对文件夹范围内运行节点脚本。

修改

file_to_include ABSOLUTE_PATH
Error: ENOENT, no such file or directory 'file_to_include.js'
...
at Object.<anonymous> (/root/the_second_folder/socket.io/lib/client.js:3:9)
...
at Object.<anonymous> (/root/the_second_folder/socket.io/lib/index.js:12:14)

现在socket.io中发生了错误......对此有何想法?

1 个答案:

答案 0 :(得分:0)

您可以使用全局__dirname,它返回当前脚本的目录。

然后您可以执行以下操作:

var file_to_include = "file.js";
eval(fs.readFileSync(path.join(__dirname,file_to_include))+'');

但请问您为什么eval()使用JS文件而不只是require()呢?