我带着一个工作项目回到家,计划在个人电脑上进行调试。我安装了所有东西,使用相同的环境(Node v0.11.12)等等。启动项目后,我看到一些提示消息,抱怨配置加载器模块无法找到一个文件(该文件实际存在于错误路径下)。
仔细查看错误,我意识到问题出在path.join()
。那么这个问题出现在哪里呢?
path.join('./foo/bar');
// 'foo/bar'
这不太好。为什么path.join
会删除前导点?
** 注意 **
上面只是一个例子。程序使用类似于此函数的功能。
var configFile = require(path.join(modulePath, 'conf', file));
例如,其中modulePath
是相对于当前工作目录的(即./app/module/
)
.
表示当前路径。因此,当作为本地文件路径解析时,./foo/./bar
通常应该等同于规范形式foo/bar
,因为非绝对路径隐含相对路径。哪些路径可以正常工作,哪些路径不能在configFile
中使用?(也就是说,提供工作/失败情况的输入和输出。) - user2864740process.cwd()
解析路径并传递绝对路径到require
。顺便说一下,如果前导点还在,它仍然有效。让我重新表述一下,require('./foo/bar');
有效,但require('foo/bar');
无效。但所有这些都不是问题的直接部分。我期望path.join()
"连接"路径,而不以任何方式解决它。 - Yanick Rochonfoo/bar
是./foo/././././bar/.
的规范形式 - 而path.join
返回规范形式。"点路径组件" 在前面(而不是其他地方)的事实并不重要。 - user2864740