簡體   English   中英

Mocha 在 WebStorm 11 中描述“缺少 require()”

[英]Mocha's describe "require() is missing" in WebStorm 11

我剛剛安裝了 WebStorm 11 並創建了一個新項目,但是 WebStorm 說describe方法需要require()

缺少 require() 調用

我已經添加了絕對類型的 mocha 庫,范圍是測試目錄(這個文件所在的目錄)。

編輯:如評論中所述,此問題中解決的實際問題實際上是 IntelliJ 15 / WebStorm 11 中的錯誤(請參閱https://youtrack.jetbrains.com/issue/WEB-18768 )。 我在下面留下答案是因為很多人在尋找提供的解決方案時都會來到這里。

公認的答案是解決問題的大錘方法。 更好的解決方案是為測試目錄啟用 mocha-DefinitelyTyped 庫。 這不僅會消除錯誤檢查,還會提供更好的語法突出顯示。

從檢查的描述來看:

當使用在其可見的 JavaScript 代碼之外定義自己的全局符號的庫(例如 Mocha 中的describe() )時,建議您在 Preferences | 添加相應的 TypeScript 類型定義文件作為 JavaScript 庫。 語言和框架 | JavaScript | 圖書館。

導航到上面提到的首選項部分,“首選項 | 語言和框架 | JavaScript | 庫”,並檢查 mocha-DefinitelyTyped 庫是否在列表中。

如果@types/mocha (以前被命名為mocha-DefinitelyTyped )不在列表中,請單擊Download…按鈕,在“TypeScript community stubs”部分找到“mocha”,選擇它,然后單擊“下載並安裝”:

要導入的“mocha”庫,顯示在“下載庫”窗口中

該庫在列表中僅命名為mocha ,但在導入后將轉換為@types/mocha (在 2019 年初之前,它將轉換為mocha-DefinitelyTyped )。

一旦你有了 mocha-DefinitelyTyped,取消選中它的 Enabled 復選框。 對其進行全面檢查將在全局范圍內啟用它,即使是在測試之外,這也是不准確的。 相反,我們將管理它的范圍,使其僅在您的測試目錄中啟用。 單擊Manage Scopes…按鈕,找到您的測試目錄,單擊 Library 列,然后選擇“mocha-DefinitelyTyped”條目。 請參閱下面的屏幕截圖。

JavaScript 庫使用范圍首選項窗口的屏幕截圖

這是 v. 11 中引入的新檢查 - 它檢查代碼中使用的模塊是否通過 require() 語句引用。 實際上,這種檢查對於 mocha 測試來說是多余的(“描述”和其他內容不需要明確要求,因為它們已被 Mocha 添加到全局范圍內)。 您可以禁用此檢查或針對“描述”、“它”等禁止它(請參閱https://www.jetbrains.com/webstorm/help/suppressing-inspections.html )。 另一種選擇:創建一個排除規范文件的自定義范圍(設置/外觀和行為/范圍),然后選擇此范圍進行“缺少 require() 語句”檢查(設置/編輯器/檢查/Javascript/Node.js)。

相關票證: WEB-18768

當前 Webstorm 2017.3 中存在一個錯誤,該錯誤阻止通過“首選項 | ”安裝 Javascript 庫。 語言和框架 | JavaScript | 圖書館 | 下載並安裝'方法。

正在此處對其進行跟蹤,最新的 EAP(早期訪問預覽版)(撰寫本文時為 Webstorm 2017.3.2)修復了該問題。 https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725

我把頭撞在牆上幾個小時,希望這能幫助別人。

如果您已經全局安裝了 mocha 並且仍然無法正常工作,請嘗試刪除所有運行/調試配置。

它將更新 npm runner,我希望它能解決問題。

在此處輸入圖片說明

有一個非常簡單的解決方法可以為您和項目中的所有其他開發人員解決問題:

在文件頂部添加以下行:

const { describe, it, before, beforeEach, afterEach, after } = require('mocha');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM