TypeScript'导出作业不能在包含其他导出元素的模块中使用&{39;

时间:2017-09-30 03:52:56

标签: javascript node.js typescript node-modules

我的目标是从我的所有代码中获取所有redis操作的单个redis.js文件,就像下面的代码片段一样

const Redis = require('./handler/redis.js');
Redis.set();
Redis.get() etc ..

from my app.js
require('./core/redis')(redisClient);

以上代码运行时没有任何错误但我得到的打字稿错误为'导出作业不能用于包含其他导出元素的模块'

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.     要求(' ./芯/ redis的&#39)。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);
};

这是正确的方法吗

1 个答案:

答案 0 :(得分:1)

您已在此模块中为module.exports = function(redisClient) {编写了exports作为转让声明,之后您使用module.exports.setmodule.exports.getmodule.exports.del覆盖此声明#39;为什么会出错?'导出作业无法在包含其他导出元素的模块中使用' 。我不知道你从哪里获得函数的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);
};