nodejs vyžadují vnitřní strojopis soubor

hlasů
60

Jsem zvědav, jak zavést pravidelné nodejs modul z node_modulesadresáře zevnitř TypeScripttřídy.

Když zkusím sestavit .tssoubor, který obsahuje:

var sampleModule = require('modulename');

překladač mi říká, že nelze použít vyžadovat v tomto oboru. (Tento řádek je na začátku souboru).

Existuje způsob, jak nahrát a používat moduly z node_modulesvnitřní TypeScripttřídy?

Položena 05/10/2012 v 09:05
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
77

Strojopisem vždy stěžovat, když není schopen najít symbol. Kompilátor přichází spolu se sadou výchozích definic window, documenta tak zadaný v souboru s názvem lib.d.ts. Pokud se mi grep pro requirev tomto souboru se mi podaří najít žádnou definici funkce require. Z toho důvodu musíme říci kompilátoru si, že tato funkce bude existovat za běhu s použitím declaresyntaxe:

declare function require(name:string);
var sampleModule = require('modulename');

Na mém systému, to přeloží v pohodě.

Odpovězeno 05/10/2012 v 09:26
zdroj uživatelem

hlasů
30

Správná syntaxe je:

import sampleModule = require('modulename');

nebo

import * as sampleModule from 'modulename';

Pak sestavit strojopisem s --module commonjs.

Pokud balíček nepřijde s index.d.tssoubor a to package.jsonnemá "typings"vlastnost, tscbude štěkat, že neví, co 'modulename'se týká. Za tímto účelem budete muset najít .d.tssoubor pro něj na http://definitelytyped.org/ , nebo psát vlastní kůži.

Pokud píšete kód Node.js budete také chtít node.d.tssoubor z http://definitelytyped.org/ .

Odpovězeno 03/02/2016 v 07:47
zdroj uživatelem

hlasů
16

Nejlepším řešením je získat kopii definic typu uzlu. To vyřeší všechny druhy problémům se závislostmi, a to nejen require(). To bylo dříve provedeno pomocí balíčků podobně typings, ale Mike Chamberlain zmíněno, typizace jsou zastaralé. Moderní způsob, jak se to dělá takto:

npm install --save-dev @types/node

Nejenom, že to opravit chybu kompilátoru, bude také přidat definice API uzlu do IDE.

Odpovězeno 18/10/2017 v 21:20
zdroj uživatelem

hlasů
4

Použijte typizací pro přístup k uzlu funkce z strojopisem:

typings install env~node --global

Pokud nemáte typizací nainstalovat:

npm install typings --global
Odpovězeno 29/12/2016 v 09:42
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more