Vyhledávání na webu

node.js - MongoDB nemůže najít definici typu Promise


Vytvořil jsem nový projekt, nainstaloval několik definic typů (z DefinitelyTyped) a vytvořil základní soubor src/go.ts.

Kdykoli překládám kód, zobrazí se mi spousta chyb TS2304: Nelze najít název 'Promise'!
Soubor ./typings/mongodb/index.d.ts odkazuje na Promise, ale překladač ho zřejmě nenachází.
Upozorňuji, že mám nainstalovaný také dt~promise.

Snímek obrazovky (Chyby vlevo, typové definice nainstalovány a kód aplikace vpravo)

Obsah typings.json:

{
  "globalDependencies": {
    "dotenv": "registry:dt/dotenv#2.0.0+20160327131627",
    "express": "registry:dt/express#4.0.0+20160708185218",
    "express-serve-static-core": "registry:dt/express-serve-static-core#4.0.0+20160805091045",
    "mime": "registry:dt/mime#0.0.0+20160316155526",
    "mongodb": "registry:dt/mongodb#2.1.0+20160602142941",
    "mongoose": "registry:dt/mongoose#4.5.4+20160807120805",
    "mongoose-promise": "registry:dt/mongoose-promise#4.5.4+20160720003345",
    "node": "registry:dt/node#6.0.0+20160807145350",
    "promise": "registry:dt/promise#7.1.1+20160602154553",
    "serve-static": "registry:dt/serve-static#0.0.0+20160606155157"
  }
}

Máte nějaké nápady?

Odpověď č. 1

Zažil jsem stejný problém (více či méně, používáním @types místo typings) a podařilo se mi ho vyřešit instalací definic typů pro CoreJS.

Snímky obrazovky

Omlouvám se za odkazování na knihovnu, toto je můj první příspěvek, takže nemohu poskytnout více než dva odkazy na příspěvek.

Vysvětlení obrázků:

  • První screenshot ukazuje podobnou chybu, soubor s definicí typu pro MongoDB nemůže najít 'Promise'.
  • Nainstalujte typové definice pro CoreJS. Všimněte si, že své typové definice získávám prostřednictvím NPM a nikoli Typings. Takže pokud byste chtěli udělat něco podobného v Typings, spustili byste něco jako:

    • typings install dt~core-js --save --global
  • Třetí screenshot ukazuje příkaz sestavení bez chyb ve výstupu 😁

Doufám, že to vyřeší váš problém.

Odpověď č. 2

Měl jsem stejný problém při instalaci nejnovější verze MongoDB a typů Mongoose.

Nový definční soubor pro MongoDB předpokládá, že používáte ES6 promise, takže pokud změníte target kompilátoru TypeScript v tsconfig.json na es6, mělo by to fungovat.

tsconfig.json:

{
    "compilerOptions": {
        ...
        "target": "ES6",
        ...
    }
}

Související články