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