Path.join 需要在 Nodejs 中跨平台
Path.join cross platform in Nodejs for require
我记得很久以前在 Node js 中,需要使用 path.join 才能跨平台加载本地模块。我只是想知道我们是否仍然需要这样的策略,或者 Node 12+ 不再需要它?
谢谢
例如
const i= require(path.join(__dirname,'config','myModule'))
而不是写作
const i=require('./config/module')
任何一个都可以正常工作,而且从我记事起就在 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()
的时候是当你可能正在构建一个路径,你将发送到一些需要 OS-specific 路径分隔符的外部模块时,或者当你只需要 path.join()
处理以确保您要加入的片段之间只有一个路径分隔符(例如,当您不知道各个片段是否已经有前导或尾随斜杠时)。
require()
本身可以在任何支持的平台上与 /
一起作为路径分隔符正常工作,因此 require('./config/module')
在 Windows 上也可以正常工作,即使 OS 路径分隔符是 \
.
我记得很久以前在 Node js 中,需要使用 path.join 才能跨平台加载本地模块。我只是想知道我们是否仍然需要这样的策略,或者 Node 12+ 不再需要它?
谢谢
例如
const i= require(path.join(__dirname,'config','myModule'))
而不是写作
const i=require('./config/module')
任何一个都可以正常工作,而且从我记事起就在 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()
的时候是当你可能正在构建一个路径,你将发送到一些需要 OS-specific 路径分隔符的外部模块时,或者当你只需要 path.join()
处理以确保您要加入的片段之间只有一个路径分隔符(例如,当您不知道各个片段是否已经有前导或尾随斜杠时)。
require()
本身可以在任何支持的平台上与 /
一起作为路径分隔符正常工作,因此 require('./config/module')
在 Windows 上也可以正常工作,即使 OS 路径分隔符是 \
.