TypeScript'导出分配不能用于具有其他导出元素的模块'

我的目标是为所有的redis操作提供一个redis.js文件,就像下面的代码片断一样

const Redis = require('./handler/redis.js'); Redis.set(); Redis.get() etc .. from my app.js require('./core/redis')(redisClient); 

上面的代码运行没有任何错误但是我得到typescript错误为'一个导出分配不能用在一个模块与其他导出的元素'

 module.exports = function(redisClient) { redisClient.on('error',function(err) { console.log('Redis Error ' + err); }); redisClient.on('connected',function() { console.log('Redis Connected'); }); module.exports.set = function(key, value, next) { redisClient.set(key,value,next); }; module.exports.get = function(key, next) { redisClient.get(key,next); }; module.exports.del = function(key, next) { redisClient.del(key,next); }; }; 

即使这个警告如何我的代码正在运行

编辑代码://从我的app.js需要('./ core / redis')。init(redisClient);

 module.exports.init = function(redisClient) { redisClient = redisClient; } redisClient.on('error',function(err) { console.log('Redis Error ' + err); }); redisClient.on('connected',function() { console.log('Redis Connected'); }); module.exports.set = function(key, value, next) { redisClient.set(key,value,next); }; module.exports.get = function(key, next) { redisClient.get(key,next); }; module.exports.del = function(key, next) { redisClient.del(key,next); }; 

这是做到这一点的正确方法

你已经写了module.exports = function(redisClient) {作为从这个模块exports赋值语句,然后用module.exports.setmodule.exports.getmodule.exports.del覆盖这个语句这就是为什么它是给出错误“导出分配不能用在具有其他导出元素的模块中” 。 我不知道从哪里得到redisClient参数的函数。 如果这个在当前模块中已经可用,那么你可以直接写代码

 redisClient.on('error',function(err) { console.log('Redis Error ' + err); }); redisClient.on('connected',function() { console.log('Redis Connected'); }); module.exports.set = function(key, value, next) { redisClient.set(key,value,next); }; module.exports.get = function(key, next) { redisClient.get(key,next); }; module.exports.del = function(key, next) { redisClient.del(key,next); };