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

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

.

4b9b3361

Ответ 1

Это не работало для меня в RTM в Visual Studio 2015 в веб-проекте, но я решил проблему.

Этот проект не был создан с помощью Visual Studio и не имеет файла _references.js в любом месте. Поэтому я думаю, что это будет работать в любой ситуации.

Я удалил все другие ресурсы intellisense из пользовательского интерфейса VS, чтобы убедиться, что я сделал, что это исправлено.

Загрузить диалоговое окно AngularJS

  1. Скопируйте несжатый URL-адрес CDN. Сегодня это https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.js
  2. В RTM версии Visual Studio 2015 перейдите к Tools, Options, Text Editor, Javascript, Intellisense, References. Выберите соответствующую справочную группу; для большинства веб-проектов это Implicit (Web). Вставьте url в нижнем текстовом поле и нажмите кнопку Add. Не отключайте диалоговое окно. введите описание изображения здесь
  3. В Text Editor, Javascript, Intellisense, General убедитесь, что флажок установлен на Download remote references.
  4. Нажмите кнопку OK.
  5. (необязательно) Если вы хотите, чтобы intellisense для созданных angular поставщиков (не входящих в структуру angular), добавьте _references.js в корень вашего проекта. Не беспокойтесь о создании папки Scripts. Щелкните правой кнопкой мыши по нему и выберите автосинхронизацию, затем выберите обновление. Пойдите в него и удалите все js файлы, созданные процессом сборки. Если вы этого не сделаете, они могут быть настолько большими, что они сломают intellisense. Будьте готовы к задержке ~ 5-10 секунд при первом использовании intellisense, так как он должен загрузить все эти ссылки из вашего проекта.
  6. Возможно, вам придется отключить intellisense в Resharper для javascript, если это мешает родной intellisense.
  7. Перезапустить 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!

Ответ 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 - Профессиональная

Тем не менее, я получил его с помощью моего решения здесь ->

  1. Вы должны ссылаться на источник с помощью вложенного ///<reference path="yourpath"/> даже если источник находится в той же папке, в которой находится код.
  2. НЕ ИСПОЛЬЗУЙТЕ минимизированный источник. Весь ваш источник должен быть не минимизирован.
  3. Если вы храните свои пути 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. Удачи!