我带着一个我计划在我的个人电脑上摆弄的工作项目带回家,我安装了所有东西,使用完全相同的环境(节点v0.11.12)等。启动项目,然后我问好了消息抱怨配置加载程序模块无法找到文件(存在且位于错误暴露的路径下)。
仔细观察错误,我意识到问题是path.join()
。其中
path.join('./foo/bar');
// 'foo/bar'
哪个不好。为什么path.join
会删除领先期?
以上只是一个例子。该程序使用像
这样的功能var configFile = require(path.join(modulePath, 'conf', file));
例如,modulePath
相对于当前工作目录(即./app/module/
)
答案 0 :(得分:1)
这是正确的行为,并记录在Path.join文档中:
将所有参数连接在一起并规范化生成的路径。
正确因为foo/bar
是./foo/bar
的规范化(canoncial)形式,就像./foo/././bar/.
的规范化形式一样1}}或foo/baz/../bar
。
(require('./foo/bar')
和require('foo/bar')
之间的差异,以及由此产生的任何问题,都应在没有path.join
的其他问题中明确解决。)