microsoft / microsoft/TypeScript-Sublime-Plugin
"Cannot find module" when requiring node_module with package.json types from .js but works fine in .ts
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 1.7k
- Forks
- 236
- Merge medio
- 21 d 13 h
- PR fusionados (30 d)
- 1
Descripción
I have some npm dependencies like socket.io or cheerio that provide type info for TS via the package.json types field.
This works just fine in a TS file such as server.ts:
import socketIO = require('socket.io')
socketIO.blah // correctly warns about property not existing
socketIO.Socket // correctly knows this exists
In javascript files however I get en error on the require line, ex in server.js:
// @ts-check
const socketIO = require('socket.io') // "Cannot find module 'socket.io' or its corresponding type declarations"
I did try and add a reference path comment/hint but that didn't work in server.js:
// @ts-check
/// <reference path='./node_modules/socket.io/dist/index.d.ts' />
const socketIO = require('socket.io') // "Cannot find module 'socket.io' or its corresponding type declarations"
However, type info comes through just fine for anything I've had to use DefinitelyTyped for. So for example if I have express as a dependency and @types/express as a devDependency then this works in server.js:
// @ts-check
const express = require('express')
express.blah // correctly warns about property not existing
express.static // correctly knows this exists
Seems like something is missing here when it comes to reading the types field off of package.json for dependencies. Is this just broken/missing functionality for javascript files or am I just missing some kind configuration or something?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el problema en server.js con @ts-check y una dependencia de socket.io cuyo package.json tenga un campo types, y luego compara el resultado con server.ts y el ejemplo de express/@types/express. Empieza rastreando cómo el plugin resuelve el require y la entrada types de package.json; está hecho cuando las importaciones de JavaScript resuelven las declaraciones incluidas y mantienen la comprobación de propiedades indicada.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, node.js, typescript
- Área
- developer-experience, tooling
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100