path.join不起作用?

时间:2017-08-14 14:44:17

标签: node.js path filepath

我想从路径中读取并编写了两个不同的代码。第一个代码不起作用,但第二个代码完美无缺。我不明白这些差异。有人可以向我解释发生了什么事吗?谢谢。  该文件存储在/ modules / config /

第一个代码:

var tmpModulePath = path.join('./modules/',"config/");
var moduleConfigInfo = require(tmpModulePath + "_test.js");

第二段代码:

var tmpModulePath = path.join('./modules/',"config/");
var moduleConfigInfo = require("./" + tmpModulePath + "_test.js");

从第一个代码,我得到这个错误:找不到模块... _ tset.csv

1 个答案:

答案 0 :(得分:0)

如果你控制台.log生成的路径,你得到这个结果:

第一个代码块:

"模块/配置/ _test.js"

第二个代码块:

" ./模块/配置/ _test.js"

在第二种情况下,您有一个从当前目录(./)开始的相对路径。 require将从当前目录开始查找模块文件夹。

在第一种情况下,路径是绝对路径,这意味着require将从文件系统的根路径开始查找modules文件夹。

我希望你现在明白这个区别。

在这种情况下,您真正​​想要使用的是path.resolve

var tmpModulePath1 = path.resolve('./', 'modules/',"config/", 'test.js');

检查this question的答案,了解.join.resolve之间的区别。