microsoft / microsoft/TypeScript-Sublime-Plugin
"Cannot find module" when requiring node_module with package.json types from .js but works fine in .ts
Nessuno ha ancora preso questa issue.
- Lingua principale
- JavaScript
- Stelle
- 1.7k
- Fork
- 236
- Merge medio
- 21g 13h
- PR unite (30g)
- 1
Descrizione
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?
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci il problema in server.js con @ts-check e una dipendenza socket.io il cui package.json contiene un campo types, quindi confronta il risultato con server.ts e l’esempio express/@types/express. Inizia tracciando il modo in cui il plugin risolve il require e la voce types di package.json; il lavoro è completato quando gli import JavaScript risolvono le dichiarazioni incluse e mantengono il controllo delle proprietà segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript, node.js, typescript
- Ambito
- developer-experience, tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 25/100