tern.js не загружает плагин three.js

Проблема

В настоящее время я пытаюсь создать 3D-веб-приложение на основе three.js.

Я использую neovim в качестве среды разработки и YouCompleteMe в качестве системы завершения.

Я установил tern для завершения JS и добавил .tern-project файл, подобный этому.

{
    "libs": [
        "browser",
        "ecmascript",
    ],
    "loadEagerly": [
    ],
    "plugins": {
        "threejs": {}
    }
}

Я также скопировал threejs.js и threejs.json в каталог моего проекта, сгенерированный tern-threejs.

Однако YouCompleteMe не показывает семантическое завершение по сравнению с демонстрационным кодовым зеркалом tern-threejs

Сравнение:

кодовое зеркало:

кодовое зеркало

неовим:

неовим

Примечание. Я вообще не вижу никакого завершения.

В чем проблема?


person sohnryang    schedule 04.08.2017    source источник


Ответы (1)


threejs.js — это файл плагина tern, а threejs.json — файл библиотеки tern. файлы плагинов должны быть скопированы в каталог tern/plugin, а файлы библиотеки должны быть помещены в каталог tern/defs. Эти два каталога существуют в каталоге tern.

С установленным «YouCompleteMe» этот путь к каталогу: ~/.vim/YouCompleteMe/third_party/ycmd/third_party/tern-runtime/node‌​_modules/tern. Вам нужно только скопировать один из вышеупомянутых файлов. Файл плагина или файл библиотеки; и соответствующим образом обновите файл .tern-project. так:

  1. Сначала убедитесь, что вы включили средство завершения Tern на YouCompleteMe. Например, на моем Mac мне пришлось запустить следующее:

    cd ~/.vim/bundle/YouCompleteMe
    ./install.py --tern-completer
    

    Подробнее о том, как это сделать в других средах, см. в руководстве по установке.

  2. Скопируйте threejs.js, затем перейдите к

    ~/.vim/YouCompleteMe/third_party/ycmd/third_party/tern-runtime/node‌​_modules/tern/plugin/
    

    и вставить.

  3. Обновите файл .tern-project вашего проекта следующим образом:

    {
        "libs": [
            "browser",
            "ecmascript",
        ],
        "plugins": {
            "es_modules": {},
            "threejs": {}
        }
    }
    

    Обратите внимание, что я также включил плагин es_modules (это плагин, поставляемый с самой теркой), так как вы используете систему шаблонов модулей ES6.

person dNitro    schedule 04.08.2017
comment
Ну, это не сработало. Для начала не было такого каталога, как YouCompleteMe/third_party/ycmd/third_party/tern. Мне удалось найти YouCompleteMe/third_party/ycmd/third_party/tern-runtime/node_modules/tern, поэтому я скопировал threejs.js в каталог plugin, но это не сработало. - person sohnryang; 07.08.2017
comment
Проблема сохраняется, хотя я запускаю ./install.py с --tern-completer. - person sohnryang; 07.08.2017
comment
@sohnryang, ваш путь крачки правильный; поэтому я обновил ответ. Кстати, вы также скопировали файл .tern-project в каталог вашего проекта. Все ваши файлы .js должны быть размещены внутри или с потомками каталога, в который был помещен .tern-project. - person dNitro; 07.08.2017
comment
Я уже обновил .tern-project файл, но не вижу завершения. - person sohnryang; 07.08.2017