AngularJS intellisense не работает на Visual Studio 2015
В соответствии с этим post intellisense также должен работать над новым VS 2015, но пока я получаю intellisense для angular объект, а не для зависимостей или моих пользовательских модулей.
![image]()
Вот что я сделал:
- Добавил angular.intellisense.js к глобальным ссылкам на JavaScript в
C:\Program Files (x86)\Microsoft Visual Studio 14.0\JavaScript\References
- Перезапущенный VS2015
И затем ничего, он просто показал восклицательные знаки, когда я пытался использовать intellisense для объекта $http.
Я также добавил файл в то же место, что и my angular.js, но он все еще не работал. Вопрос, который у меня есть в этом случае, где я должен поместить файл? в общей папке angular с только моими angular.js или в моей папке dev angular, где все файлы, загруженные из беседки.
Я также попытался добавить его непосредственно в меню tools/options/text editor/javascriptr/intellisense/reference, в ссылочной группе Implicit (Web), но он все равно не работает.
В моем проекте у меня есть следующая структура папок внутри папки src:
- Wwwroot
- приложение (мой сайт angular)
- lib (js-зависимости, только файл .min.js каждой библиотеки)
- angular
- angular -route
- ....
- _references.js(файл ссылок visual studio js содержит ссылки на файлы внутри папок приложения и lib)
- Библиотеки (содержит полные библиотеки, загружаемые беседкой)
- angular
- angular -route
- ...
В качестве побочного примечания у меня нет папки /scripts и, следовательно, нет /scripts/_references.js
file
.
Ответы
Ответ 1
Это не работало для меня в RTM в Visual Studio 2015 в веб-проекте, но я решил проблему.
Этот проект не был создан с помощью Visual Studio и не имеет файла _references.js
в любом месте. Поэтому я думаю, что это будет работать в любой ситуации.
Я удалил все другие ресурсы intellisense из пользовательского интерфейса VS, чтобы убедиться, что я сделал, что это исправлено.
![Загрузить диалоговое окно AngularJS]()
- Скопируйте несжатый URL-адрес CDN. Сегодня это https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js
- В RTM версии Visual Studio 2015 перейдите к
Tools, Options, Text Editor, Javascript, Intellisense, References
. Выберите соответствующую справочную группу; для большинства веб-проектов это Implicit (Web)
. Вставьте url в нижнем текстовом поле и нажмите кнопку Add. Не отключайте диалоговое окно.
![введите описание изображения здесь]()
- В
Text Editor, Javascript, Intellisense, General
убедитесь, что флажок установлен на Download remote references
.
- Нажмите кнопку OK.
- (необязательно) Если вы хотите, чтобы intellisense для созданных angular поставщиков (не входящих в структуру angular), добавьте
_references.js
в корень вашего проекта. Не беспокойтесь о создании папки Scripts
. Щелкните правой кнопкой мыши по нему и выберите автосинхронизацию, затем выберите обновление. Пойдите в него и удалите все js файлы, созданные процессом сборки. Если вы этого не сделаете, они могут быть настолько большими, что они сломают intellisense. Будьте готовы к задержке ~ 5-10 секунд при первом использовании intellisense, так как он должен загрузить все эти ссылки из вашего проекта.
- Возможно, вам придется отключить intellisense в Resharper для javascript, если это мешает родной intellisense.
- Перезапустить Visual Studio. Это не сработает, пока вы этого не сделаете. Кроме того, я параноик о закрытии всех других экземпляров, отличных от этого экземпляра, поэтому эти настройки "прилипают". Поэтому я предлагаю вам сделать это до перезапуска этого экземпляра.
Ответ 2
Как отметил @Balthasar (и если вы используете Resharper), вам нужно будет включить intellisense из Visual Studio, чтобы он работал:
Resharper → options → environment → intellisense → general, выберите "Custom Intellisense", а для Javascript вы можете выбрать Visual studio. В качестве альтернативы вы можете использовать завершение заявления "Visual Studio" (вторая опция)
![введите описание изображения здесь]()
Ответ 3
Я только что понял, что автоматический порядок, который использует файл _reference.js(сначала мои файлы, а затем файлы фреймворка), мешал intellinsense работать с другими файлами, которые не были файлом app.js
вот как теперь выглядит моя _references.js:
/// <autosync enabled="false" />
/// <reference path="angular.js" />
/// <reference path="angular-resource.js" />
/// <reference path="angular-ui-router.min.js" />
/// <reference path="jquery-2.1.4.js" />
/// <reference path="materialize/materialize.js" />
/// <reference path="../App/App.js" />
/// <reference path="../App/Controllers/productsController.js" />
/// <reference path="../App/Controllers/productsEditController.js" />
/// <reference path="../App/Controllers/valuesController.js" />
/// <reference path="../common/common.services.js" />
/// <reference path="../common/productsResource.js" />
/// <reference path="../common/valuesResource.js" />
Ответ 4
У меня была аналогичная проблема, и оказалось, что Resharper блокировал все приятные JavaScript intellisense, которые у меня были установлены в моем файле _references.js.
Ответ 5
Visual Studio intellisense для AngularJS чрезвычайно сентиментальна (хороший способ сказать, что она, скорее всего, плохо развита).
Итак, даже если все хорошо настроено с файлом _references.js, и вы получаете intellisense для других библиотек, таких как jquery, вы, скорее всего, не получите его для AngularJS.
Например, в сообществе VS 2015 ниже директива не будет показывать intellisense для объекта $http angular, хотя все работает отлично с кодом:
![введите описание изображения здесь]()
На следующем изображении я добавляю пустой модуль в модуль (это означает, что модуль будет создан, а если другой с тем же именем существует, он будет перезаписан), а intellisense начнет работать:
![введите описание изображения здесь]()
Вот фрагмент кода для проверки себя (попробуйте добавить пустой массив здесь):
(function () {
'use strict';
angular
.module('intellisence.sucks.directives')
.directive('footer', footer);
footer.$inject = ['$http'];
function footer($http) {
$http.
var directive = {
link: link,
restrict: 'EA'
};
return directive;
function link(scope, element, attrs) {
}
}
})();
Ответ 6
У меня была такая же проблема. Когда я добавил angular, VS 2015 (окончательная первоначальная версия) изменила мою _references.js; в основном он удалил некоторые из моих строк в файле. Когда я добавил ссылку на angula в свой _references.js, как показано ниже
/// <reference path="lib/angular/angular.js" />
Я получил свой intellisense для Angular 1.4.3 в VS 2015!
Ответ 7
Следуйте этой статье, чтобы добавить более полное intellisense к VS.
http://blogs.msdn.com/b/visualstudio/archive/2015/02/05/using-angularjs-in-visual-studio-2013.aspx
Загрузите файл angular.intellisense.js и поместите его в папку Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\Libraries
Ответ 8
У меня была эта проблема.
Идентификатор визуальной студии сканирует любые файлы js, указанные в файлах HTML, и использует их, если это необходимо (для intellisense и т.д.).
Моя проблема заключалась в том, что я ссылался на Angularjs, используя адреса CDN/http://, и, следовательно, у Visual studio не было никакой информации о angular.
Попробуйте загрузить файл angularjs js напрямую и включите в свой проект и ссылку в свой index.html, перестройте (на всякий случай) и повторите попытку, и, надеюсь, он должен работать.
Надеюсь, я помог.
Ответ 9
У меня есть эта проблема для RTM..apart из angular объекта и в hello world complex senario ($ http и все пользовательские объекты не работают). Последующие настройки _references. Мое единственное подозрение в том, что я обновился с RC до RTM (без новой установки), создал проблему на Git [link] github.com/jmbledsoe/angularjs-visualstudio-intellisense/issues/.....Захват изображения VHD Win 10 и попробуем это, как только d/l закончит:( -
![мой файл _reference с angular добавил сидение в wwwroot]()
![ошибка с отсутствующим intellisense для $http и любых других моих пользовательских объектов]()
ОБНОВЛЕНИЕ
Хорошо, немного помогите, вот ответ... Двигатель Intellisense никогда не видит созданный модуль с именем "sportsStore", так как он создается в файле app.html в блоке script:
<script>
angular.module("sportsStore", ["customFilters","cart"]);
</script>
Механизм VS Intellisense "выполняет" код в вашем проекте, чтобы узнать, как выполнить завершение кода. Он использует файл _references.js в качестве отправной точки и выполняет каждую ссылку из этого файла по порядку. Поскольку VS Intellisense никогда не выполняет строку кода, которая создает модуль AngularJS с именем "sportsStore", он не знает, как выполнить завершение кода.
Переместите приведенный выше код JavaScript в его собственный JS файл (позвоните ему "app.js" ) и включите ссылку на него в _references.js. Убедитесь, что ссылка "app.js" сразу после ссылки "angular.js", так как вам нужно создать модуль до того, как его настроят другие файлы script.: D
Ответ 10
Просто создайте файл _references.js в папке с именем "Сценарии" (соглашение об именах) в корне вашего проекта. Обновите его необходимыми файлами javascript, и вы сможете получить intellisense. Здесь ссылка на то, зачем такая вещь нужна: http://madskristensen.net/post/the-story-behind-_referencesjs
Ответ 11
Ничто из вышеперечисленного не работает для меня. Моя Visual Studio 2017 - Профессиональная
Тем не менее, я получил его с помощью моего решения здесь ->
- Вы должны ссылаться на источник с помощью вложенного
///<reference path="yourpath"/>
даже если источник находится в той же папке, в которой находится код. - НЕ ИСПОЛЬЗУЙТЕ минимизированный источник. Весь ваш источник должен быть не минимизирован.
- Если вы храните свои пути stmts в файле _reference.js, убедитесь, что этот файл находится в том же каталоге, где находится ваш файл кода.
Хотя я могу поместить ссылку stmt в свой файл кода, я решил использовать отдельный файл " _reference.js " для его хранения.
Вы можете поместить это с вашим кодом:
/// <reference path="../_assets/JS-Main/angular-1.3.13.js" />
var app = angular.module('app', ['ui.grid', 'ui.bootstrap']);
app.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) {
Или вы можете ввести эту строку в ваш файл _reference.js
/// <reference path="../_assets/JS-Main/angular-1.3.13.js" />
![_reference.js at the same dir as your .js files]()
После того, как вы проделали все вышеперечисленное, вы сможете увидеть угловой смысл.
Вы можете сделать то же самое для intellisense других, таких как jQuery, Anytime, _underscore и т.д.... просто продолжайте добавлять операторы пути в файл _reference.js, и вы также можете скопировать этот файл _reference.js на другие веб-сайты, если они имеют такой же dir struct. Удачи!