facebook / facebook/flow

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

オープン
#1,322 コメント 12 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Rust
スター
22.3k
フォーク
1.9k
PR マージ指標
30日以内にマージされた PR はありません

説明

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.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。