¿Cómo cargo un módulo NodeJS normal (desde node_modules
) desde dentro de una TypeScript
clase?
Cuando intento compilar un .ts
archivo que contiene:
var sampleModule = require('modulename');
Los mensajes del compilador que no puedo usar requieren en este ámbito. (esa línea está al principio del archivo).
node.js
typescript
Zdenek Sejcek
fuente
fuente
require
se puede usar en cualquier lugar, no depende del alcance.Respuestas:
Mecanografiado siempre se quejará cuando no pueda encontrar un símbolo. El compilador viene junto con un conjunto de definiciones predeterminadas para
window
,document
y como se especifican en un archivo llamadolib.d.ts
. Si hago un greprequire
en este archivo, no puedo encontrar una definición de funciónrequire
. Por lo tanto, tenemos que decirle al compilador que esta función existirá en tiempo de ejecución usando ladeclare
sintaxis:En mi sistema, esto se compila bien.
fuente
import sampleModule = module('modulename')
v0.8.8
. Es mejor usar el enfoque de @Valentin y luego usar, por ejemplo, WebStorm IDE que puede descargar definiciones para la versión de Node que está ejecutando y darle autocompletar, etc.La sintaxis correcta es:
o
Luego compile su TypeScript con
--module commonjs
.Si el paquete no viene con un
index.d.ts
archivo ypackage.json
no tiene una"typings"
propiedad,tsc
ladrará que no sabe a qué se'modulename'
refiere. Para ello, necesita encontrar un.d.ts
archivo en http://definitelytyped.org/ o escribir uno usted mismo.Si está escribiendo código para Node.js, también querrá el
node.d.ts
archivo de http://definitelytyped.org/ .fuente
La mejor solución es obtener una copia de las definiciones de tipos de Node. Esto resolverá todo tipo de problemas de dependencia, no solo
require()
. Esto se hacía anteriormente usando paquetes comotypings
, pero como mencionó Mike Chamberlain, Typings está en desuso. La forma moderna lo está haciendo así:No solo solucionará el error del compilador, sino que también agregará las definiciones de la API de nodo a su IDE.
fuente
npm install -g @types/node
pero eso no funcionó.Use mecanografía para acceder a las funciones de nodo desde TypeScript:
Si no tiene mecanografía 😲 instálelo:
fuente
npm install @types/node --save-dev