Jak załadować zwykły moduł NodeJS (z node_modules
) z TypeScript
klasy?
Kiedy próbuję skompilować .ts
plik zawierający:
var sampleModule = require('modulename');
Kompilator wyświetla monit, którego nie mogę użyć w tym zakresie. (ta linia znajduje się na początku pliku).
node.js
typescript
Zdenek Sejcek
źródło
źródło
require
można go używać wszędzie, nie zależy to od zakresu.Odpowiedzi:
Maszynopis zawsze narzeka, gdy nie może znaleźć symbolu. Kompilator przychodzi wraz z zestawem standardowych definicji
window
,document
i takie określonych w pliku o nazwielib.d.ts
. Jeśli wykonam greprequire
w tym pliku, nie mogę znaleźć definicji funkcjirequire
. Dlatego musimy sami powiedzieć kompilatorowi, że ta funkcja będzie istnieć w czasie wykonywania, używającdeclare
składni:W moim systemie kompiluje się dobrze.
źródło
import sampleModule = module('modulename')
v0.8.8
. Lepiej jest użyć podejścia @Valentin, a następnie użyć, powiedzmy, środowiska WebStorm IDE, które może pobrać definicje dla wersji używanego węzła i zapewnić autouzupełnianie itp.Prawidłowa składnia to:
lub
Następnie skompiluj swój TypeScript z
--module commonjs
.Jeśli do pakietu nie dołączono
index.d.ts
pliku ipackage.json
nie ma on"typings"
właściwości,tsc
szczeka, że nie wie, do czego się'modulename'
odnosi. W tym celu musisz znaleźć odpowiedni.d.ts
plik na http://definitelytyped.org/ lub napisać go samodzielnie.Jeśli piszesz kod dla Node.js, będziesz potrzebować również
node.d.ts
pliku z http://definitelytyped.org/ .źródło
Najlepszym rozwiązaniem jest pobranie kopii definicji typu węzła. To rozwiąże wszystkie rodzaje problemów związanych z zależnościami, nie tylko
require()
. Wcześniej było to robione przy użyciu takich pakietów, jaktypings
, ale jak wspomniał Mike Chamberlain, typy są przestarzałe. Współczesny sposób robi to w następujący sposób:Nie tylko naprawi błąd kompilatora, ale również doda definicje Node API do twojego IDE.
źródło
npm install -g @types/node
ale to nie zadziałało?Użyj typów, aby uzyskać dostęp do funkcji węzłów z języka TypeScript:
Jeśli nie masz znaków 😲 zainstaluj go:
źródło
npm install @types/node --save-dev