Я написал этот код в Typescript
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);just become
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
Я использую node 6.7.2
export default class Redis
в вашем коде становитсяexports.default = Redis
на выходе. То же самое происходит сredis
, он импортируется какexports.default = redis
, поэтому он используетсяredis_1.default.createClient
.redis_1
— ссылка наexports
, аredis_1.default
— ссылка наexports.default
. Проблема, с которой вы можете столкнуться, - это просто отсутствующий модуль (вы запускалиnpm i redis
?). Попробуйтеconsole.log(redis)
в своем коде - person Jevgeni   schedule 19.04.2017import * as redis from 'redis';
иimport * as Promise from 'bluebird';
- person artem   schedule 19.04.2017console.log(redis)
иconsole.log(redis.createClient)
и получаю объект redis и вывожу как[Function]
для второго consolelog - person user7887107   schedule 19.04.2017