плащ метеора третья сторона

я хочу протестировать запрос/ответ keycloak с сервером keycloak в файле докера, работающем на моей локальной машине.

Пакет Keycloak в атмосферах не работает, поэтому я решил включить его в свой метеоритный проект в качестве сторонней библиотеки.

Я поместил библиотеку в public/compatibility/keycloak/keycloak.js

Автозаполнение находит его, но если я его использую, то получаю ошибку.

Исключение при вызове метода getTestToken ReferenceError: Keycloak не определен

Но я этого не понимаю, потому что он правильно реализован как сторонняя библиотека в метеоре. Может ли кто-нибудь помочь мне сделать это?


person Othead    schedule 10.03.2017    source источник
comment
можешь показать как ты это реализовал? Вы пробовали сделать это пакетом?   -  person mutdmour    schedule 10.03.2017
comment
что вы хотите увидеть, как именно я это реализовал? я вызываю в клиенте в событии метод метеора, как инициализировать Keycloak(). нет, я не пробовал, потому что это должно занять много времени?   -  person Othead    schedule 10.03.2017
comment
как вы импортируете скрипт? вы используете теги сценария? на самом деле создать пакет довольно легко и быстро. позвольте мне попробовать это с keycloak и свяжусь с вами   -  person mutdmour    schedule 10.03.2017
comment
вы пробовали модули npm?   -  person mutdmour    schedule 10.03.2017
comment
Хорошо, теперь я понимаю. в моем случае я делаю это, чтобы импортировать Keycloak из библиотеки/адаптера как вызовы keycloak. пусть тест = Keycloak(); в файле Javascript внутри папки сервера. Библиотека находится в общей папке. поэтому есть ссылка, если щелкнуть ее через IDE, например Webstorm. Я приземляюсь в библиотеке. Но если я вызываю их во время выполнения, я получаю эту ошибку. спасибо за вашу помощь и извините за мой плохой английский   -  person Othead    schedule 10.03.2017
comment
нет, не пробуйте с модулями npm   -  person Othead    schedule 10.03.2017
comment
с модулями npm тоже не работает... пишет, что окно не определено....   -  person Othead    schedule 10.03.2017
comment
с вашим предыдущим решением, когда вы вызывали их как скрипт, вы пробовали window.KeyClock?   -  person mutdmour    schedule 10.03.2017
comment
это не работает.... окно не определено   -  person Othead    schedule 10.03.2017
comment
в хром консоли?   -  person mutdmour    schedule 10.03.2017
comment
да. в обоих ... я пробовал это на клиенте, поэтому консоль говорит это, и я пробовал это на стороне сервера, и терминал тоже говорит это ....   -  person Othead    schedule 10.03.2017


Ответы (1)


Здесь я упаковал библиотека адаптеров для метеора. Не опубликовал его, потому что мне нужно разветвить оригинальную библиотеку и другие вещи. Теперь вы можете вызвать KeyCloak() на клиенте. Вот как я тестировал это в своем router.js:

import { Keycloak } from 'meteor/mutdmour:keycloak'

Router.configure({
    waitOn: [
        function() {
            console.log(Keycloak());
        }
    ]
});

Вот что вы можете сделать, чтобы воспроизвести то, что я сделал с другими библиотеками:

  1. создайте пакет, теперь вы можете найти его в папке пакетов

    meteor create --package mutdmour:keycloak

  2. скопировал keycloak.js в packages/keycloak

  3. изменил файл package.js, чтобы он ссылался на mainModule для запуска только на клиенте. Вот почему вы получаете «окно не определено». Потому что он работает на сервере. Вы можете попробовать поместить этот импорт в if (Meteor.isClient()){...}

    api.mainModule('keycloak.js', 'client');

  4. добавлен экспорт в package.js

    api.export('Keycloak', 'client');

  5. добавьте слово export в определение Keycloak в keycloak.js

    export var Keycloak =

  6. добавить пакет

    meteor add mutdmour:keycloak

person mutdmour    schedule 10.03.2017
comment
Спасибо. но теперь я получаю эту ошибку: не могу найти модуль 'meteor/mutdmour:keycloak' ..... - person Othead; 10.03.2017
comment
Вы скопировали его в папку пакетов (должна быть /packages/keycloak) и добавили meteor add mutdmour:keycloak - person mutdmour; 10.03.2017
comment
зайдите в свои папки в терминале и cd packages/. Там позвоните git clone https://github.com/mutdmour/meteor-keycloack-adapter.git, а затем позвоните meteor add mutdmour:keycloak. теперь, если вы используете железный маршрутизатор, скопируйте приведенный выше код маршрутизатора. - person mutdmour; 10.03.2017
comment
если он был добавлен в проект, откройте файл keycloak.js в папке пакета и поместите console.log вверху под (function( window, undefined ) {, чтобы убедиться, что он загружается. затем console.log(window) в том же месте, чтобы проверить, отправляется ли окно. - person mutdmour; 10.03.2017
comment
хорошо, это работает. но теперь я получаю, если я делаю проверку, например: 'ошибка инициализации'); }); ........... я получаю исключение в хромированных консолях, и оно говорит: Uncaught SyntaxError: Unexpected token ‹ в JSON в позиции 0 в JSON.parse (‹anonymous›) в XMLHttpRequest.req.onreadystatechange ( keycloak.js:599) - person Othead; 10.03.2017
comment
не может тиражироваться. вы настроили keycloak.json или var keycloak = Keycloak({ url: 'http://keycloak-server/auth', realm: 'myrealm', clientId: 'myapp' }); - person mutdmour; 10.03.2017
comment
я делал только это. это задокументировано на сайте документа keycloak. пусть keycloak = Keycloak(); keycloak.init().success(function(аутентифицированный) { alert(аутентифицированный? 'аутентифицированный': 'не аутентифицированный'); }).error(function() { alert('не удалось инициализировать'); }); - person Othead; 10.03.2017
comment
да, но для этого по-прежнему требуется keycloak.json или объект. Я получаю 404 в консоли, когда я этого не делаю. - person mutdmour; 10.03.2017
comment
наконец, это работает для меня .. большое спасибо, mutdmour. ты супер ;) - person Othead; 15.03.2017
comment
Потрясающие. Я рад :) - person mutdmour; 15.03.2017