nodejs wymaga wewnątrz pliku TypeScript
Zastanawiam się jak załadować zwykły moduł nodejs z katalogu node_modules
z wewnątrz klasy TypeScript
.
Kiedy próbuję skompilować .ts
plik zawierający:
var sampleModule = require('modulename');
Kompilator mówi mi, że nie mogę używać require w tym zakresie. (linia ta znajduje się na początku pliku).
Czy Jest jakiś sposób na załadowanie i użycie modułów z node_modules
wewnątrz TypeScript
klasy?
4 answers
Maszynopis zawsze będzie narzekał, gdy nie będzie w stanie znaleźć symbolu. Kompilator zawiera zestaw domyślnych definicji dla window
, document
i takie określone w pliku o nazwie lib.d.ts
. Jeśli wykonam grep dla require
w tym pliku nie znajdę definicji funkcji require
. W związku z tym musimy sami powiedzieć kompilatorowi, że ta funkcja będzie istniała w czasie wykonywania przy użyciu składni declare
:
declare function require(name:string);
var sampleModule = require('modulename');
W moim systemie, to kompiluje się dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-05 08:26:40
Prawidłowa składnia to:
import sampleModule = require('modulename');
Lub
import * as sampleModule from 'modulename';
Następnie skompiluj swój maszynopis za pomocą --module commonjs
.
Jeśli pakiet nie zawiera pliku index.d.ts
, a jego package.json
nie ma właściwości "typings"
, tsc
będzie szczekał, że nie wie, do czego odnosi się 'modulename'
. W tym celu należy znaleźć .d.ts
plik http://definitelytyped.org/ , albo sam napisz.
Jeśli piszesz kod dla Node.js będziesz też chciał plik node.d.ts
z http://definitelytyped.org/.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-05 01:43:14
Najlepszym rozwiązaniem jest uzyskanie kopii definicji typu węzła. Rozwiąże to wszystkie problemy związane z zależnościami, nie tylko require()
. Wcześniej robiono to przy użyciu pakietów takich jak typings
, ale jak wspomniał Mike Chamberlain, typowanie jest przestarzałe. Współczesny sposób robi to tak:
npm install --save-dev @types/node
Nie tylko poprawi błąd kompilatora, ale także doda definicje interfejsu API węzła do twojego IDE.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-28 09:36:05
Użyj typowań, aby uzyskać dostęp do funkcji węzła z TypeScript:
typings install env~node --global
Jeśli nie masz wpisów zainstaluj:
npm install typings --global
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 09:42:56