做元编程有点,我一直在寻找一个需要自己导出的文件,就像这样:
exports.foo = 'bar';
setTimeout(function () {
console.log(require(__filename).foo);
},100);
事实证明上述方法可以正常工作,但这似乎并非如此:
exports.foo = 'bar';
setTimeout(function () {
console.log(require('.').foo);
},100);
有人知道为什么require('.')
与require(__filename)
不同吗?
答案 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 */
}