require('。')与require(__ filename)不同;

时间:2018-07-18 03:18:12

标签: node.js

做元编程有点,我一直在寻找一个需要自己导出的文件,就像这样:

exports.foo = 'bar';

setTimeout(function () {
  console.log(require(__filename).foo);
},100);

事实证明上述方法可以正常工作,但这似乎并非如此:

exports.foo = 'bar';

setTimeout(function () {
  console.log(require('.').foo);
},100);

有人知道为什么require('.')require(__filename)不同吗?

1 个答案:

答案 0 :(得分:5)

模块路径中的独立(或前导)时间段是当前文件夹或目录而不是当前文件的简写。

'.'

请求exports涉及folders as modules的过程,该过程从index.js或已配置的"main"脚本中检索require()

使用require.resolve(),您可以看到console.log(require.resolve('.')); // e.g. "/path/to/index.js" console.log(require.resolve(__dirname)); // e.g. "/path/to/index.js" console.log(require.resolve(__filename)); // e.g. "/path/to/foo.js" 将从其中读取的绝对路径:

scanf("%ld %c%c", &number, &units, &newline);
if (newline != '\n') {
    /* ERROR */
}