¿Cómo cargo un módulo NodeJS normal (desde node_modules) desde dentro de una TypeScriptclase?
Cuando intento compilar un .tsarchivo 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

requirese 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,documenty como se especifican en un archivo llamadolib.d.ts. Si hago un greprequireen 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 ladeclaresintaxis: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.tsarchivo ypackage.jsonno tiene una"typings"propiedad,tscladrará que no sabe a qué se'modulename'refiere. Para ello, necesita encontrar un.d.tsarchivo en http://definitelytyped.org/ o escribir uno usted mismo.Si está escribiendo código para Node.js, también querrá el
node.d.tsarchivo 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/nodepero 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