Node.js Typescript-tsc编译器破坏我的代码

Node.js Typescript-tsc编译器破坏我的代码,node.js,typescript,tsc,Node.js,Typescript,Tsc,我用打字脚本写了这段代码 import redis from 'redis'; import Promise from 'bluebird'; const DEFAULT_REDIS_TTL = 7200; // 2 hours export default class Redis { readonly client : any; ttl : number = DEFAULT_REDIS_TTL; constructor(uri? : string, ttl :

我用打字脚本写了这段代码

import redis from 'redis';
import Promise from 'bluebird';

const DEFAULT_REDIS_TTL = 7200; // 2 hours

export default class Redis {

    readonly client : any;
    ttl : number = DEFAULT_REDIS_TTL;

    constructor(uri? : string, ttl : number = DEFAULT_REDIS_TTL) {
        this.client = redis.createClient(uri);
    }

    ...
}

export { Redis };
编译器给了我这个

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var redis_1 = require("redis");
var bluebird_1 = require("bluebird");
var DEFAULT_REDIS_TTL = 7200; // 2 hours
var Redis = (function () {
    function Redis(uri, ttl) {
        if (ttl === void 0) { ttl = DEFAULT_REDIS_TTL; }
        this.ttl = DEFAULT_REDIS_TTL;
        this.client = redis_1.default.createClient(uri);
        this.client.on('error', function (error) {
            console.error(error);
        });
...
exports.Redis = Redis;
exports.default = Redis
我不知道为什么'redis.createClient(uri)<代码>刚刚变成redis_1.default.createClient(uri)`

尝试在节点中运行代码时出现以下错误

build/Lib/Cache/Redis.js:11
        this.client = redis_1.default.createClient(uri);
                                     ^

TypeError: Cannot read property 'createClient' of undefined
我的
tsconfig
如下所示

{
    "compilerOptions": {
        "module": "mymodule",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": false,
         "module": "commonjs",
        "outDir": "build"
    },

    "include": [
        "src/**/*.ts"
    ],

    "exclude": [
        "node_modules"
    ]
}
我在主目录中运行编译器

tsc
我正在使用节点6.7.2将导入更改为:

import * as redis from 'redis';
我认为的打字没有默认的导出。确保你有最新的打字机。
如果您有最新的打字,
从“redis”导入redis
应引发编译时错误。

请注意,代码中的
导出默认类Redis
如何成为输出中的
exports.default=Redis
。同样的情况也发生在
redis
,其“作为
exports.default=redis
导入”,这就是为什么要使用
redis\u 1.default.createClient
redis_1
是对
exports
的引用,而
redis_1.default
是对
exports.default的引用。您可能遇到的问题只是缺少一个模块(您是否运行了
npm i redis
?)。在代码中尝试
console.log(redis)
使用不同的导入语法可能会有所帮助:
import*作为“redis”中的redis
导入*作为“蓝鸟”的承诺
我运行
console.log(redis)
console.log(redis.createClient)
,我得到了redis对象并像第二个控制台的
[Function]
一样输出。对于第二个控制台,我将尝试更改导入语法+1,正如建议的那样<代码>从“redis”导入{createClient}也可能是一个选项,如果你只想使用一种方法谢谢你,这很有效。。。这取决于模块,我没有发布
mongodb驱动程序
express