我试图相对神秘地要求一个文件,发生了以下情况
这很好,它指向 /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"
不管怎样?
提前致谢
最佳答案
更新:
来自 documentation :
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
forrequire('./circle')
to find it.Without a leading '/' or './' to indicate a file, the module is either a "core module" or is loaded from a
node_modules
folder.If the given path does not exist,
require()
will throw an Error with itscode
property set to'MODULE_NOT_FOUND'
.
这是原始答案,指的是 require.paths
(不再支持):
来自 documentation :
在 Node 中,require.paths
是一个字符串数组,表示要搜索模块的路径当它们没有以 '/'
为前缀时,'./'
,或 '../'
.
(强调我的)
关于javascript - nodeJS require.paths 解决问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390886/