Подтвердить что ты не робот

Mocha описывает "require() отсутствует" в WebStorm 11

Я только что установил WebStorm 11 и создал новый проект, однако WebStorm говорит, что для метода describe необходим require():

require() отсутствует

Я добавил определенную библиотеку mocha типов и область действия для тестового каталога (в котором находится этот файл).

4b9b3361

Ответ 1

Изменение: Как отмечено в комментариях, фактическая проблема, затронутая в этом вопросе, на самом деле является ошибкой в IntelliJ 15/WebStorm 11 (см. Https://youtrack.jetbrains.com/issue/WEB-18768). Я оставляю ответ ниже, потому что многие люди приходят сюда в поисках предложенного решения.

Принятый ответ - кувалдой подход к решению проблемы. Лучшее решение - включить библиотеку mocha-DefiniteTyped для тестовой директории. Это не только удалит ошибочную проверку, но и обеспечит лучшую подсветку синтаксиса.

Из описания осмотра:

При использовании библиотек, которые определяют свои собственные глобальные символы вне своего видимого кода JavaScript (например, describe() в Mocha), рекомендуется добавить соответствующий файл определения типа TypeScript в виде библиотеки JavaScript в Preferences | Языки и рамки | JavaScript | Библиотеки.

Перейдите к разделу настроек, указанному выше, "Настройки | Языки и рамки | JavaScript | Библиотеки и проверьте, есть ли в списке библиотека mocha-DefiniteTyped.

Если @types/mocha (раньше назывался mocha-DefinitelyTyped) отсутствует в списке, нажмите кнопку " Download…, найдите "mocha" в разделе "Заглушки сообщества TypeScript", выберите его и нажмите "Загрузить и установить":

‘mocha library to import, shown in the Download Library window

Библиотека в списке называется просто mocha, но она будет преобразована в @types/mocha (до начала 2019 года она будет преобразована в mocha-DefinitelyTyped) после импорта.

Как только у вас есть mocha-DefiniteTyped, снимите флажок "Включено". Если оставить его полностью проверенным, это позволит сделать это глобально, даже вне тестов, что будет неточным. Вместо этого мы сделаем так, чтобы его область действия была включена только в вашем тестовом каталоге. Нажмите кнопку " Manage Scopes…, найдите тестовый каталог, щелкните столбец "Библиотека" и выберите запись "mocha-DefiniteTyped". Смотрите скриншот ниже.

screenshot of the JavaScript Libraries Usage Scopes preferences window

Ответ 2

Это новая проверка, введенная в версии 11, - она ​​проверяет, ссылается ли модуль, используемый в коде, через инструкцию require(). Эта проверка, действительно, избыточна для мокко-тестов ( "описать", а другие вещи не требуются явно, поскольку они добавляются в глобальную область Mocha). Вы можете отключить эту проверку или подавить ее для "описать", "это" и т.д. (См. https://www.jetbrains.com/webstorm/help/suppressing-inspections.html). Другой вариант: создать пользовательскую область с исключенными вашими спецификационными файлами (Настройки/Внешний вид и Поведение/Области), затем выбрать эту область для проверки "Отсутствует необходимость()" (Настройки/Редактор/Инспекции/Javascript/ Node.js).

Связанный билет: WEB-18768

Ответ 3

В настоящее время в Webstorm 2017.3 есть ошибка, которая препятствует установке библиотек Javascript через "Настройки" | Языки и рамки | JavaScript | Библиотеки | Способ загрузки и установки.

Отслеживается здесь, и последняя проблема EAP (предварительный просмотр доступа) (Webstorm 2017.3.2 на момент написания) устраняет проблему. https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725

Я часами ударил головой о стену, надеюсь, это поможет кому-то другому.

Ответ 4

Если вы уже установили mocha глобально и если он все еще не работает, попробуйте удалить все конфигурации Run/Debug.

Это обновит npm runner, и я надеюсь, что это решит проблему.

enter image description here