抛出错误?"/>
尝试使用文件夹模块时抛出错误?
[当尝试要求两个包含js文件的文件夹时,我收到一个抛出错误,返回找不到这两个文件夹。这些模块显然存在,所以我不明白如何不能要求它们。起初我以为这与js文件的内容有关,但是如果js文件中存在错误,那么肯定可以确定该错误与js文件的内容特别相关,而与js文件的内容无关。
相反,它只是简单地指出找不到模块
internal/modules/cjs/loader.js:960
throw err;
^
Error: Cannot find module './training'
Require stack:
- d:\nodejs_scripts\sessions\session1_05.05.20\main.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15)
at Function.Module._load (internal/modules/cjs/loader.js:840:27)
at Module.require (internal/modules/cjs/loader.js:1019:19)
at require (internal/modules/cjs/helpers.js:77:18)
at Object.<anonymous> (d:\nodejs_scripts\sessions\session1_05.05.20\main.js:2:20)
at Module._compile (internal/modules/cjs/loader.js:1133:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ 'd:\\nodejs_scripts\\sessions\\session1_05.05.20\\main.js' ]
}
我调试了./training
内容和./serializer
内容,但都没有发现错误。因此,当尝试要求main.js
中的文件夹时,必定会发生错误。有什么明显的我想念的地方吗?
提前感谢。
回答如下:[当您尝试require()
文件夹名称时,您将获得the doc中所述的这些规则:
LOAD_AS_DIRECTORY(X)
1. If X/package.json is a file,
a. Parse X/package.json, and look for "main" field.
b. If "main" is a falsy value, GOTO 2.
c. let M = X + (json main field)
d. LOAD_AS_FILE(M)
e. LOAD_INDEX(M)
f. LOAD_INDEX(X) DEPRECATED
g. THROW "not found"
2. LOAD_INDEX(X)
LOAD_INDEX(X)
1. If X/index.js is a file, load X/index.js as JavaScript text. STOP
2. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP
3. If X/index.node is a file, load X/index.node as binary addon. STOP
因此,如果您试图从require('./training')
中加载main.js
,则./training
是目录,因此您遵循LOAD_AS_DIRECTORY()
规则。它首先在该目录中查找package.json
文件。您的目录屏幕截图没有显示一个。然后转到LOAD_INDEX(X)
,并在该目录中查找index.js
,index.json
或index.node
。您也不显示任何一个。
因此,该目录中似乎缺少四个可能的选项,因此require()
放弃并报告错误。要加载目录,您需要这四个选项之一在该目录中。回顾一下,四个选项是:
package.json
index.js
index.json
index.node
而且,如果有package.json,它必须有一个“ main”字段来告诉require()
要加载的内容。
更多推荐
尝试使用文件夹模块时抛出错误?
发布评论