我试图要求一个文件相对而神秘地发生以下情况
这很好,它指向/Users/marcos/Desktop/Taper/lib/utils.js
myPath = "/Users/marcos/Desktop/Taper/lib/./utils"; require(myPath);
这不只是它应该指向完全相同的文件:
require.paths.unshift("/Users/marcos/Desktop/Taper/lib") require("./utils"); //Doesn't work with './' require("utils"); //Works Fine
任何人都知道为什么我不能使用./在这种情况下加载路径,因为
require("path").resolve("/Users/marcos/Desktop/Taper/lib","./utils")
结果是:
"/Users/marcos/Desktop/Taper/lib/utils"
无论如何?
提前致谢
解决方法
更新:
A module prefixed with
'/'
is an absolute path to the file. For
example,require('/home/marco/foo.js')
will load the file at
/home/marco/foo.js
.A module prefixed with
'./'
is relative to the file callingrequire()
.
That is,circle.js
must be in the same directory asfoo.js
for
require('./circle')
to find it.Without a leading ‘/’ or ‘./’ to indicate a file,the module is either
a “core module” or is loaded from anode_modules
folder.If the given path does not exist,
require()
will throw an Error with
itscode
property set to'MODULE_NOT_FOUND'
.
这是原始的答案,它是指require.paths(不再支持):
在节点中,require.paths是一个字符串数组,它们表示当前缀’/’,’./’或’../’时要搜索模块的路径.
(强调我的)