node.js - Mecanografía: "No se puede encontrar el módulo" con mecanografías válidas
express typescript (3)
Acabo de comenzar un nuevo proyecto de nodejs usando mecanografia. Instalé Typings ( https://github.com/typings/typings ) y lo utilicé para instalar archivos de referencia para el nodo v4.x y expresar v4.x.
La versión de mi nodo es v4.2.6 La versión de mi manuscrito es v1.7.5
Mi directorio de proyectos se presenta así:
package.json
tsconfig.json
typings.json
src/
app.ts
typings/
main.d.ts
main/ambient/node/node.d.ts
main/ambient/express/express.d.ts
El contenido de typings / main.d.ts es el siguiente:
/// <reference path="main/ambient/express/express.d.ts" />
/// <reference path="main/ambient/node/node.d.ts" />
Los contenidos de tsconfig.json son los siguientes:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs"
}
}
Los contenidos de typings.json son los siguientes:
{
"dependencies": {},
"devDependencies": {},
"ambientDependencies": {
"express": "github:DefinitelyTyped/DefinitelyTyped/express/express.d.ts#dd4626a4e23ce8d6d175e0fe8244a99771c8c3f2",
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#1c56e368e17bb28ca57577250624ca5bd561aa81"
}
}
Los contenidos de src / app.ts son los siguientes:
''use strict'';
///<reference path="../typings/main.d.ts"/>
import * as express from "express";
Esto es extremadamente simple y debería resultar en una aplicación básica. Sin embargo, cuando intento compilar esto, error TS2307: Cannot find module ''express''.
el error de error TS2307: Cannot find module ''express''.
He intentado reorganizar los archivos de mecanografía, cambiando la ruta relativa en la etiqueta de ruta de referencia, usando el campo de files
en tsconfig.json para indicar las rutas de referencia en lugar de usar una etiqueta en línea en el archivo, todo en vano. También he intentado compilar usando gulp-typescript
, gulp-tsc
y tsc
directamente en la línea de comandos.
Recibo errores similares cuando trato de usar los módulos incorporados de nodejs como crypto
, http
, fs
etc.
Estas referencias parecen válidas, ¿qué me falta?
La respuesta de Daniel es técnicamente correcta, pero en función de su tsconfig main.d.ts
todavía se habría recogido, por lo que no solucionaría los problemas.
Dicho esto, encontré problemas y envié una solicitud de extracción: https://github.com/jereynolds/ts-test/pull/1
Probablemente debería excluir las
typings
y losnode_modules
contrario, la compilación contendrá identificadores duplicados (typings) / será lenta (node_modules)las tipificaciones instalan
serve-static
(necesario paraexpress
) ymime
(necesario paraserve-static
).
Las directivas de barra triple deben preceder a cualquier declaración en su archivo. Su prólogo de "use strict"
debe venir después de sus comentarios de referencia para que así sea:
///<reference path="../typings/main.d.ts"/>
''use strict'';
import * as express from "express";
Como seguimiento a su comentario donde no está obteniendo ninguna emisión para su importación: eso se debe a que TypeScript realiza la importación de importación. A menos que use el módulo para algún valor, el compilador no emitirá la importación porque asume que solo necesita ese módulo para sus tipos.
Sé que esta es una pregunta antigua, y lamento haberla golpeado, pero aparece como uno de los primeros enlaces en Google.
Ya que lo anterior no solucionó mi problema y eventualmente lo resolví, pensé que lo compartiría ... En mi caso, fue la interacción relativa lo que causó el problema.
Mis mecanografías estaban en
typings/bootstrap
, typings/react-dom
, typings/react
, etc.
El react-dom
tiene una import from ''react''
. Para arreglar mi código tuve que editarlo para que fuera ''../react/react''
. ¡Sencillo!