2016-01-21 62 views
3

某些模塊似乎對Flow不可見。例如,我有通過NPM安裝到我的node_modules目錄react-native-overlay,但我得到了一大堆這樣的錯誤,從流量:node_modules中存在的模塊的「找不到所需模塊」

[js/components/DatePickerOverlay.js:18 
18: let Overlay = require('react-native-overlay'); 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ react-native-overlay. Required module not found 

此模塊沒有類型,因此這將是很好,如果我可以直接去找流完全忽略它。

這裏是我的.flowconfig(基於原生做出反應的一個):

https://gist.github.com/almost/20c6caf6d18d0e5c689f

正如你可以看到我在流0.20.1和我有module.system =急速(如要求作出反應原生)

我嘗試在導入行中添加一個// $ FlowIgnore註釋,但後來流程投訴了一個不需要的忽略註釋!我也嘗試用一個虛擬導出創建一個react-native-flow.js.flow文件,它似乎在第一時間工作,但在流程重新啓動停止工作後。

有關如何幫助Flow找到此模塊或使其完全忽略導入行的任何想法?

+0

我寫了一個GitHub的問題進行流量有關解決此錯誤或改善此錯誤消息:[導入在.flowconfig中忽略的文件時不應該出現「找不到需要的模塊」錯誤](https://github.com/facebook/flow/issues/3945) –

回答

4

看起來你在這裏忽略它:https://gist.github.com/almost/20c6caf6d18d0e5c689f#file-flowconfig-L42-L50

如果你不介意手動鍵入它,添加一個反應 - 本機overlay.js中你的接口和輸入了幾個簽名。

+0

Arg!我完全錯過了這一點,我曾將它作爲以前版本的Flow中的錯誤的解決方法,然後完全忘記了它。謝謝! –

+0

有沒有辦法告訴流,我想忽略node_modules中的庫,也不提供任何流類型的聲明?我希望流程完全忽略該庫,只要我與它交互,流可以認爲它是有效的。我冒這個險。可以做到嗎? – Ernesto

0

發生這種情況的原因是該庫不存在於flow-typed中。如果使用流動型<

[ignore] 
<PROJECT_ROOT>/libdefs.js 
[libs] 
./libdefs.js 

0.60.0加入libdefs.js

// @flow 

declare module "react-native-overlay" { 
    declare var exports: any; 
} 

或者如果使用流動型> 0.60:

一個簡單的修正可以創建在.flowconfig文件中的以下條目。 0

declare module 'react-native-overlay' { 
    declare module.exports: any; 
} 

注:any是不安全的類型,所以你總是可以利用提高圖書館

希望幫助的定義,