模块包装器函数出现问题



我正在尝试学习node.js,但在运行带有模块包装函数的代码时遇到了问题。这是代码

logger.js(1(

var url = 'http://mylogger.io/log';
function log(message) {

console.log(message);
}
module.exports.log = log;

logger.js(2(

( function (exports, require, module, __filename, __dirname)
{
var url = 'http://mylogger.io/log';
function log(message) {

console.log(message);
}
module.exports.log = log;
})

app.js

const logger = require('./logger.js')
console.log(logger);
logger.log('Hiya');

js(1(运行良好,logger.js(2(给出以下错误。

TypeError: logger.log is not a function
at Object.<anonymous> ()
at Module._compile (node:internal/modules/cjs/loader:1092:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
at Module.load (node:internal/modules/cjs/loader:972:32)
at Function.Module._load (node:internal/modules/cjs/loader:813:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47

我原以为两种情况都会得到相同的结果

在作为logger.js(2)附加的代码段中,
function (exports, require, module, __filename, __dirname)与NodeJS编译器无关,对NodeJS编译器没有意义。

执行预期操作的正确方法是logger.js(1)中列出的方法
如果要导出多个函数,则

var url = 'http://mylogger.io/log';
function log(message) {
console.log(message);
}
function log_twice(message) {
console.log(message);
console.log(message);
}
module.exports = { log: log, log_twice: log_twice }; //and so on

如果答案有帮助,请请求接受。。。

最新更新