facebook / facebook/flow

.flowconfig option module.name_mapper can't map to a lib definition

Abierto
#1,322 12 comentarios 0 reacciones 0 asignados Ver en GitHub
bug
Lenguaje dominante
Rust
Estrellas
22.3k
Forks
1.9k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Repro:

.flowconfig

```
[lib]
lib
[options]
module.name_mapper='1Doesnt\(Exist\)' -> '\1s'
```

A.js

``` javascript
/* @flow */
var m1 = require('./1DoesntExist'); // actual error: can't find module 1DoesntExist
var a_1: string = m1.numVal; // expected error: number ~> string
```

lib/Exists.js

``` javascript
declare module 'Exists' {
declare var exports: {
numVal: number;
};
};
```

Expected output:

```
A.js:3:19,27: number
This type is incompatible with
A.js:3:10,15: string
```

Actual output:

```
A.js:2:22,37: ./1DoesntExist
Required module not found
```

Workaround:
While libdefs aren't working, it's still possible to map to a node module. There's an npm module called `empty` that can be useful here. See [this gist](https://gist.github.com/lambdahands/d19e0da96285b749f0ef) for a complete example.

I think the issue is that we do name mapping specifically against file paths, so the code just doesn't attempt to handle this case. I think that it should. cc @jeffmo, who originally added this feature.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.