javascript - official - ¿Cómo encontrar el módulo "fs" en MS Code con TypeScript?
typescript version (5)
Me estoy ejecutando en una MacBook Air. Instalé MS Code como un IDE y también tengo TypeScript instalado.
Tengo un archivo simple con solo esta línea:
import fs = require(''fs'');
Obtengo un rojo ondulante debajo de la ''fs'' dentro del paréntesis y el mensaje de error es [ts] Cannot find module ''fs''.
El archivo tiene una extensión .ts. Soy nuevo en JavaScript y en TypeScript, pero tenía la impresión de que fs
era un módulo central, así que ¿cómo no se podía encontrar? ¿Cómo soluciono el problema?
Otras cosas que intenté ya:
- Colocando un cuerpo de función simple en el archivo y luego compilando en la línea de comando con
tsc
. Me sale un error esencialmente equivalente allí:error TS2307: Cannot find module ''fs''.
- En la línea de comando
sudo npm install fs -g
. Esto informa un éxito aparente, pero no soluciona el problema.
Busqué SE y la web, pero las respuestas que parecían cercanas parecen suponer que ''fs'' está disponible.
"fs" es un módulo de Nodo central y creo que su sintaxis de extracto de importación está un poco desajustada. Tratar:
import * as fs from "fs";
Ahora hay una mejor manera sin tener que ir a las herramientas tsd o typings previas. NPM ahora tiene el paquete @types para mecanografiado. En este ejemplo, necesita el paquete @types/node
:
npm install "@types/node" --save-dev
Asegúrese de estar utilizando la opción save-dev para instalar solo los tipos en modo de desarrollo, no en producción. Debería tener las últimas bibliotecas de nodos cuando use la sintaxis "@ types /" de instalación de npm ...
No encuentra el paquete fs porque las herramientas anteriores tipifican lo más probable es que no usen el último archivo de definición node.d.ts.
Su archivo tsconfig.json necesita ser actualizado para encontrar estos tipos de paquetes. Mi ejemplo si uso jquery, jqueryui y tipos de nodos. Suponiendo que necesita la sintaxis para trabajar también con su editor de código, en este caso el editor de código ''átomo''
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": "src",
"sourceMap": true,
"target": "es5",
"module": "amd",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"lib": ["es2015", "dom"],
"baseUrl": "./",
"typeRoots": [
"node_modules/@types"
],
"types": [
"jquery",
"jqueryui",
"node"
],
"paths": {
"src/*": ["src/*"]
}
},
"exclude": [
"node_modules",
"dist",
"build"
],
"filesGlob": [
"./src/**/*.ts",
"./test/**/*.ts",
"./typings/index.d.ts",
"./custom_typings/**/*.d.ts",
"./node_modules/@types/**/*.d.ts"
],
"atom": {
"rewriteTsconfig": false
}
}
Debe incluir el archivo de definición para el nodo.
TypeScript 2.0+
Instalar usando npm:
npm install --save-dev @types/node
TypeScript <2.0
Si usa typings entonces puede ejecutar este comando:
typings install dt~node --global --save
O si está utilizando typings <1.0 ejecutar:
typings install node --ambient --save
O si todo lo demás falla, descargue manualmente el archivo here e inclúyalo en su proyecto.
Todo lo que necesita es "moduleResolution" establecido en "node" en su tsconfig.json:
{
"compilerOptions": {
...
"moduleResolution": "node"
...
}
}
ejecutar
npm install @types/node --save-dev
y ahora puedes usar la importación estándar de TypeScript:
import * as fs from "fs";
Typescript conoce los módulos basados en convenciones, verifique la resolución del módulo para más detalles.
También para que IDE sepa sobre el módulo fs
, debe proporcionar typings para el nodo.
También revisa este problema github