AngularJs ReferenceError: требование не определено

0

Я знаю, что есть другие вопросы по этой проблеме, но я подготовил более 10 ответов и пробовал каждый из них, и никто из них не работал для меня.

Я получаю эту ошибку: Uncaught ReferenceError: require is not defined когда я пытаюсь загрузить внешний простой файл javascript для кодирования в JWT.

Это файл, который я пытаюсь включить с require(): https://github.com/hokaccha/node-jwt-simple. Я загружаю с npm.

В моем коде я пробовал много вещей.

  • Включить в main.js с хрюканьем в совокупности;
  • Загрузите вручную внутри <head> с помощью <script src="path/to/folder"></script>;
  • Установите RequireJs с npm для nodeJs;

Со всеми этими попытками у меня были те же ошибки. Что я делаю не так?

Это код, который я использую прямо сейчас:

index.html

<head>
<script type="text/javascript" src="dist/js/angular.min.js"></script>
<script type="text/javascript" src="dist/js/ui-router.min.js"></script>
<script type="text/javascript" src="dist/js/jwt.js"></script>
[... rest of head ...]

appCtrl.js (позже выполнит сборку с остальной частью приложения)

.controller('MainCtrl', 
    ['$rootScope', '$scope', '$state', 
    function($rootScope, $scope, $state) {
        var jwt = require('jwt');
        var payload = { foo: 'bar' };
        var secret = 'xxx';
        var token = jwt.encode(payload, secret);
        console.log(token);
}])

Моя главная цель - обработать аутентификацию пользователя на основе токена JWT. Проблема прямо сейчас заключается в том, чтобы кодировать/декодировать токен, когда пользователь входит в приложение.

Даже несмотря на все это, я все равно получаю ошибку. Вы, ребята, знаете, как это исправить?

  • 0
    пожалуйста, используйте полную версию угловой JS НЕ .min.js
  • 0
    @JoeLloyd, но почему? В чем причина? Я всегда использовал этот файл.
Показать ещё 16 комментариев

2 ответа

4

Если вы хотите использовать require от клиента, вам нужно использовать что - то вроде Browserify или WebPack (я определенно рекомендую последний).

Вы получаете эту ошибку, потому что, по сути, вы никогда не определяли require любом месте вашего клиентского кода. Это репозиторий JWT не обеспечивает эту функциональность для вас.

Кроме того, глядя на документы для репозитория JWT, которые вы указали, кажется, что он ожидает, что вы будете использовать его в среде node.js (которая предоставляет общие require для вас).

  • 0
    После некоторых комментариев по вопросу, который я обнаружил, мне нужно запустить его по-другому. Поскольку моя база данных использует mysql / PHP, мне придется использовать ее с библиотекой PHP, предоставленной jtw.io. Но я все еще пытаюсь понять, как установить его для кодирования токена. Есть идеи?
0

На стороне сервера (например, файл server.js) для узла используйте:

var jwt = require('jwt-simple');

Затем, чтобы закодировать:

var secret = "Ieaticecreamforbreakfast";

и в ваших функциях входа в систему... после проверки критериев входа в систему

var token = jwt.encode({id: ID, otherInfo: "can go here"}, secret); 

res.send({token: token});

Затем вы можете установить токен ответа как заголовок для дополнительных HTTP-запросов в вашей угловой, frontend-стороне. Поэтому, всякий раз, когда пользователь делает запрос на бэкэнд, у вас есть доступ к их закодированному идентификатору в JWT

  • 0
    Это было то, что я пытался, но не сработало. Любая идея о том, как использовать его с PHP-бэкэнд?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню