nodejs wymagają wewnątrz pliku wynikowego

głosy
60

Zastanawiam się, w jaki sposób załadować moduł nodejs regularny z node_moduleskatalogu od wewnątrz TypeScriptklasy.

Kiedy próbuję skompilować .tsplik, który zawiera:

var sampleModule = require('modulename');

kompilator mówi mi, nie mogę używać wymagają w tym zakresie. (Ta linia jest na początku pliku).

Czy istnieje sposób, jak załadować i moduły wykorzystania od node_moduleswewnątrz TypeScriptklasy?

Utwórz 05/10/2012 o 09:05
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
77

Maszynopis zawsze będą narzekać kiedy jest w stanie znaleźć symbol. Kompilator przychodzi wraz z zestawem definicji domyślnych window, documenta takie określonym w pliku o nazwie lib.d.ts. Jeśli robię dla grep requirew tym pliku mogę znaleźć żadnej definicji funkcji require. Stąd musimy poinformować kompilator sobie, że funkcja ta będzie istnieć w czasie wykonywania przy użyciu declareskładni:

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

W moim systemie, to kompiluje dobrze.

Odpowiedział 05/10/2012 o 09:26
źródło użytkownik

głosy
30

Poprawna składnia jest następująca:

import sampleModule = require('modulename');

lub

import * as sampleModule from 'modulename';

Następnie zestawić z maszynopisu --module commonjs.

Jeśli pakiet nie pochodzi z index.d.tspliku, a to package.jsonnie ma "typings"własności, tscbędą szczekać, że nie wie, co 'modulename'się odnosi. W tym celu trzeba znaleźć .d.tsplik o to na http://definitelytyped.org/ lub napisać samemu.

Jeśli piszesz kod node.js będzie również chcą node.d.tsplik z http://definitelytyped.org/ .

Odpowiedział 03/02/2016 o 07:47
źródło użytkownik

głosy
16

Najlepszym rozwiązaniem jest, aby otrzymać kopię definicji typu węzła. To rozwiąże wszystkie rodzaje problemów z zależnościami, nie tylko require(). Zostało to poprzednio odbywa się za pomocą pakietów jak typings, ale jak wspomniano Mike Chamberlain, typowania są przestarzałe. Nowoczesny sposób robi to w ten sposób:

npm install --save-dev @types/node

Będzie to nie tylko naprawić błąd kompilatora, będzie to również dodać definicje API Node do IDE.

Odpowiedział 18/10/2017 o 21:20
źródło użytkownik

głosy
4

Użyj typowania aby uzyskać dostęp do funkcji węzła z maszynopis:

typings install env~node --global

Jeśli nie masz typowania zainstalować go:

npm install typings --global
Odpowiedział 29/12/2016 o 09:42
źródło użytkownik

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