需要目录而不是js文件
requiring a directory rather than a js file
我在 index.js 文件中遇到这样一段代码:
exports = module.exports = require("./src")
不确定 exports = module.exports
位的含义。
并且不确定导入整个目录意味着什么 /src
.
TL;DR
这些是您问题的解决方案,从第一到第二(按顺序)。
- 最有可能将变量
exports
设置为 module.exports
。
- 导入文件夹中的默认文件(例如
index.js
)是否指定。
1. exports
变量定义了什么?
来自Dave Meehan,做了一些更正:
评论 #1
Your explanation of 1 is incorrect. If they were separate statements as illustrated, exports would equal the previous value of module.exports
, and module.exports
would equal the return value of require
. Chaining them together sets both exports
and module.exports
to the value returned by require
. It's not clear why someone would want to do that, but they did.
评论#2
We should be very careful in interpreting what the result might be in such a statement as its dependent on whether the variables export
and module
(with/without property exports) already exists, and whether we are using strict
mode. There's a number of other SO posts that expand on "chaining assignment".
注意:我对这一行也有点困惑,所以这是我有根据的猜测。欢迎在评论中纠正我,或编辑我的 post.
注意:此解法不正确。请参阅 Dave Meehan 对此解决方案更正的评论。
这一行很可能也可以分成多行,就像这样。
exports = module.exports;
module.exports = require("./src");
基本上,它只是创建一个名为 exports
的变量,并将其设置为 module.exports
。
同样的事情也可以使用对象析构来完成。
const { exports } = module;
这将简单地从 module
获取 exports
键,并创建一个名为 exports
的新变量。
2。你如何require
一个文件夹?
从技术上讲,Node 不会导入整个文件夹。基本上,它正在检查目录中的默认文件。
Node.js检查文件有两种情况。
如果 main
属性 在 package.json
中定义,它将在 /src
目录中查找该文件。
{
"main": "app.js"
}
如果 package.json
是这样的,例如,它会搜索 /src/app.js
.
如果 main
属性 未在 package.json
中定义,则默认情况下它将查找名为 index.js
的文件。因此,它将导入 /src/index.js
.
总结
综上所述,这些是您问题的解决方案。
- 最有可能将变量
exports
设置为 module.exports
。
- 导入文件夹中的默认文件(例如
index.js
)是否指定。
这应该有助于消除您的困惑。
我在 index.js 文件中遇到这样一段代码:
exports = module.exports = require("./src")
不确定 exports = module.exports
位的含义。
并且不确定导入整个目录意味着什么 /src
.
TL;DR
这些是您问题的解决方案,从第一到第二(按顺序)。
- 最有可能将变量
exports
设置为module.exports
。 - 导入文件夹中的默认文件(例如
index.js
)是否指定。
1. exports
变量定义了什么?
来自Dave Meehan,做了一些更正:
评论 #1
Your explanation of 1 is incorrect. If they were separate statements as illustrated, exports would equal the previous value of
module.exports
, andmodule.exports
would equal the return value ofrequire
. Chaining them together sets bothexports
andmodule.exports
to the value returned byrequire
. It's not clear why someone would want to do that, but they did.
评论#2
We should be very careful in interpreting what the result might be in such a statement as its dependent on whether the variables
export
andmodule
(with/without property exports) already exists, and whether we are usingstrict
mode. There's a number of other SO posts that expand on "chaining assignment".
注意:我对这一行也有点困惑,所以这是我有根据的猜测。欢迎在评论中纠正我,或编辑我的 post.
注意:此解法不正确。请参阅 Dave Meehan 对此解决方案更正的评论。
这一行很可能也可以分成多行,就像这样。
exports = module.exports;
module.exports = require("./src");
基本上,它只是创建一个名为 exports
的变量,并将其设置为 module.exports
。
同样的事情也可以使用对象析构来完成。
const { exports } = module;
这将简单地从 module
获取 exports
键,并创建一个名为 exports
的新变量。
2。你如何require
一个文件夹?
从技术上讲,Node 不会导入整个文件夹。基本上,它正在检查目录中的默认文件。
Node.js检查文件有两种情况。
如果
main
属性 在package.json
中定义,它将在/src
目录中查找该文件。{ "main": "app.js" }
如果
package.json
是这样的,例如,它会搜索/src/app.js
.如果
main
属性 未在package.json
中定义,则默认情况下它将查找名为index.js
的文件。因此,它将导入/src/index.js
.
总结
综上所述,这些是您问题的解决方案。
- 最有可能将变量
exports
设置为module.exports
。 - 导入文件夹中的默认文件(例如
index.js
)是否指定。
这应该有助于消除您的困惑。