2014-02-09 100 views
17

注意:這是一個WebStorm問題,而不是angular.js問題。WebStorm - 「angular」未定義

截屏的問題:http://f.cl.ly/items/302s0d1k1i3i1B2p0W09/ws703-angular-not-defined.mp4

說明:

我有以下我index.html文件:

<script src="vendor/js/angular.min.js"></script> 
<script src="app/js/scratch.js"></script> 

在scratch.js當我引用 「角」 我一直從JSHint獲取這個「角度未定義」消息。我如何使它成爲這個文件中定義的角度,以便JSHint停止抱怨它?這是一個配置問題?請指教。

WebStorm v7.0.3/Mac OSX上v10.9.1

+1

對於用google搜索的人來說:我正在使用webstorm10。我解決了這個問題,不是通過添加庫,而是設置項目根目錄來包含我的angular.min.js(我使用的是angular-seed。首先,我將根設置爲「path/to/project_name/app」,但現在我將其設置爲「path/to/project_name」。我的角度文件位於「path/to/project_name/bower_components」) – jchnxu

回答

23

documentation page of JSHint的第一個示例如下:

配置文件是一個簡單的JSON文件,該文件指定了JSHint選項中打開或關閉。例如,以下文件將啓用有關未定義和未使用變量的警告,並告知JSHint有關名爲MY_GLOBAL的全局變量。

{ 
    "undef": true, 
    "unused": true, 
    "globals": { "MY_GLOBAL": false } 
} 

更換MY_GLOBALangular,你不會有這樣的JSHint警告了。

+1

感謝您的回覆,JB。我不確定這是否解決了問題。我不只是想讓JSHint不要抱怨這個問題。我希望能夠做到的是在scratch.js中顯示「angular」,所以JSHinst沒有什麼可抱怨的。我曾希望將angular.js添加到JavaScript庫WebStorm知道的全球範圍內可以解決這個問題,但事實並非如此。 – RBR

+0

角度對scratch.js可見,因爲角度是一個全局變量。全局變量從任何地方都可見,這就是他們的觀點。 –

+1

這就是問題所在。爲什麼,如果角度是全局可見的,即在scratch.js的範圍內,JSHint仍然說「角度未定義」? – RBR

2

轉到Settings > Plugins並下載WebStorm的AngularJS插件。這是我在使用AngularJS和WebStorm之前做的第一件事,而且我從未看到過這個問題。

WebStorm的第8版將會全面引入AngularJS,但現在該插件應該有所幫助。

編輯:好吧,我想我可能找到了另一種可能的解決方案。正如你所說,這是一個WebStorm問題。代碼中沒有實際的錯誤,只是代碼檢查。您可以關閉此項檢查,如下所示:

轉至settings > inspections > JavaScript > General並取消選中"unresolved JavaScript variable""unresolved JavaScript function"

這應該會使錯誤消失。我在瀏覽Pluralsight的AngularJS教程時發現了這一點。

+0

已安裝的AngularJS插件,但似乎沒有解決問題。仍然看到「角」未定義的消息。但是,我收到了一些其他好的功能。所以謝謝你的建議。 – RBR

3

在情況下,它可以幫助:

我用自耕農(喲角)腳手架的基礎工程和WebStorm 8得到了相同的「角沒有定義」的問題(在那裏我有默認AngularJS插件)。但是,我見過其他人這樣做,並沒有相同的問題。

上面選擇的解決方案在JSHint中需要被告知有關名爲「angular」的全局變量是正確的。但是,如果使用yeoman,必需的配置設置將已經在.jshintrc(腳手架目錄中的文件)中定義。

所以你需要做的就是讓JSHint使用這些作爲項目的默認設置。爲此,我發現以下SO線程可用於明確設置該配置文件的位置。 JSHint behave differently in Webstorm and Grunt

在WebStorm 8中,您將看到一個名爲「使用配置文件」的選項 - 檢查將自動在項目層次結構中查找.jshintrc文件。選擇這將使'角度未定義'的問題消失。

36

Webstorm settings > JavaScript > Code Quality Tools > JSHint 

有 「預定義」 線。點擊旁邊的「設置」。在這裏您可以添加所有預定義的變量。

+2

由於這個問題關注Webstorm + JSHint + Angular,我認爲這個答案是正確的;)謝謝,正在尋找它。也在PhpStorm中工作。 – ByScripts

+1

也轉到設置/ JavaScript /庫,並確保Angular列出了Enabled checked。 – TrueWill

+0

@TrueWill的這段評論幫助了節點的「require」,而向.jshintrc添加「require」不起作用。 –

0

爲了WebStorm(2016+)正確識別angularjs甚至啓用代碼完成,只需轉至:

File > Settings 

然後在左邊選擇:

Languages & Frameworks > JavaScript > Libraries 

標記旁邊的複選框'角',然後單擊應用。如果角度沒有出現在列表中,您需要點擊「添加」並瀏覽到已下載庫的任何位置。