【问题标题】:Path.join cross platform in Nodejs for requireNodejs中的Path.join跨平台要求
【发布时间】:2021-01-31 22:50:06
【问题描述】:
我记得很久以前在 Node js 中,需要使用 path.join 来跨平台加载本地模块。我只是想知道我们是否仍然需要这种策略,或者 Node 12+ 不再需要它?
谢谢
例如
const i= require(path.join(__dirname,'config','myModule'))
而不是写
const i=require('./config/module')
【问题讨论】:
标签:
node.js
path
cross-platform
filepath
【解决方案1】:
只要我记得,两者都可以正常工作并且在 node.js 中一直很好。 require() 的模块加载规则已完整记录在 here。第一部分和第 3a 步应涵盖您的具体情况:
require(X) from module at path Y
1. If X is a core module,
a. return the core module
b. STOP
2. If X begins with '/'
a. set Y to be the filesystem root
3. If X begins with './' or '/' or '../'
a. LOAD_AS_FILE(Y + X)
您可能需要使用path.join() 的时间是您可能正在构建一个路径,该路径将发送到需要特定于操作系统的路径分隔符的某个外部模块,或者您只是希望path.join() 处理确保存在是您要加入的片段之间的唯一一个路径分隔符(例如当您不知道各个片段是否已经有前导或尾随斜杠时)。
require() 本身可以在任何受支持的平台上使用/ 作为路径分隔符正常工作,因此即使操作系统路径分隔符为\,require('./config/module') 在 Windows 上也可以正常工作。