node.js - 模块包装功能问题
问题描述
我正在尝试学习 node.js,但在运行带有模块包装函数的代码时遇到了问题。这是代码
记录器.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;
})
应用程序.js
const logger = require('./logger.js')
console.log(logger);
logger.log('Hiya');
logger.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 编译器无关,也没有意义。
执行您期望的正确方法是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
如果有帮助,请求接受答案...
推荐阅读
- php - 根据搜索到的用户 ID 显示具有最新日期的结果
- python-3.x - 无法导入 colorama 模块
- android - 在firebase中保存svg的最佳方法是什么?
- algorithm - 解决旅行商问题以在最短的时间内最大化收益
- google-chrome-os - 在戴尔 XPS 13 上安装 chromeOS 时卡在引导循环中
- html - 什么是网格模板列中的自动调整?
- java - 在 Spring Security dofilter 身份验证方法中使用 @Autowired 注释时出现 Nullpointer 异常
- rust - 切片是否有额外的动态数据?
- c++ - 比较运算符可以在 C++20 中的类定义之外默认吗?
- java - 如何以编程方式防止/禁用屏幕超时?