2015-10-26 68 views
1

我想要一個靜態錯誤,當我導入一些未導出的東西時。如何導入時出現靜態錯誤undefined

像:

somefile.js

import { 
    FrontScreen, 
    FlowScreen 
} from './containers'; 

containers.js

export FrontScreen from './FrontScreen’; 

是否有人知道如何做到這一點?也許有一些linter規則?

+0

你的單元測試沒有抓住這個嗎? – ssube

+0

單元測試是一個不同的問題,它們是動態的,我認爲這可能是靜態分析 –

+0

不確定eslint是否分析依賴關係,但可能需要考慮爲它創建插件。 –

回答

0

我不知道有什麼辦法做這樣的事情,我會懷疑這是可能的通用的方式,因爲該對象可以動態創建。考慮:

// module.js 
function foo() { /* return something .. could be an object, a string, anything */ } 
export default foo(); 
+0

這不是關於對象。導出綁定是靜態的。 – Bergi

+0

你能解釋一下嗎?我在那裏發佈的代碼是一個有效的模塊,對嗎?如果是這樣,那麼靜態地,就沒有辦法告訴你可以從導入中提取哪些屬性。 – nickf

+0

這是靜態確定您有一個默認導出和沒有命名的。我們可以檢查你是否只從'module'中導入xy;'而不是像'module'中的'import {notExisting};'。我們不知道(也不關心)當然輸出了什麼確切的值。 – Bergi

1

這需要由解析器來完成,在你的情況下爲babel。 Babel很可能會在v6開始的這種情況下拋出一個SyntaxError(從他們的懶隊中的對話來判斷),但v5不會。他們有an open issue for this