Node.js 节点-是否需要在require()中使用path.join()以实现Windows兼容性?

Node.js 节点-是否需要在require()中使用path.join()以实现Windows兼容性?,node.js,require,Node.js,Require,我知道如果想让自己的节点项目与Windows兼容,那么使用path.join是非常重要的 但是我们是否也需要在require命令中使用它?例如,代替 const colors = require('colors/safe'); 使用 const colors = require(path.join('colors', 'safe')); 这个问题可能有点傻,但在搜索节点文档后,我有点不知所措。在require语句中,path.join不是必需的,因为这些路径只由node.js解析。 join

我知道如果想让自己的节点项目与Windows兼容,那么使用
path.join
是非常重要的

但是我们是否也需要在
require
命令中使用它?例如,代替

const colors = require('colors/safe');
使用

const colors = require(path.join('colors', 'safe'));

这个问题可能有点傻,但在搜索节点文档后,我有点不知所措。

在require语句中,path.join不是必需的,因为这些路径只由node.js解析。 join()方法仅将字符串连接在一起,并使用特定于操作系统的删除器。

提示


如果要将node.js应用程序打包到可执行文件中,例如使用
pkg
,建议不要在require中使用一些join语句,因为使用此工具可以解析一些语句以将所需文件打包到可执行文件中。

您使用的编程语言是什么?C++?将其添加到标签中可能会很好。为什么您认为该标签不是重复的?它似乎已经回答了这个问题。或者,换句话说,在另一个答案中,有什么不适合你呢?正斜杠适用于windows。只要确保你的情况是正确的。如果文件/文件夹的大小写不符合要求,它将在windows或Mac上工作,但在Linux上失败。@jfriend00,接受的答案会引起我的关注,并对我的答案作出答复,这在另一个主题中没有得到答复。运行
require(“./test subdir/sub.js”)的简单测试
在节点v10.11.0的Windows 10上,确认它工作正常。我没有深入研究node.js的
require()
代码,以确定是node.js在调用Windows API读取文件之前将正向斜杠替换为反向斜杠,还是Windows正在接受正向斜杠或反向斜杠。关键是不管它是什么,它都能正常工作。我猜node.js和Windows都接受任一类型的斜杠作为路径分隔符。Windows命令shell没有,但Windows API显然有。路径仅由node.js使用,而不是由操作系统使用,这是不正确的。为了实际测试文件系统中是否存在文件并读取文件,node.js必须使用操作系统访问文件,因此在过程中的某个时刻,路径会传递到操作系统(libuv内部)。