2015-09-24 3 views
0

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

Я получаю эту ошибку: 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 (будет Concat позже сборки с остальными приложения)

.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 ** NOT ** .min.js –

+0

@JoeLloyd, но почему? В чем причина? Я всегда использовал этот файл. – celsomtrindade

+0

Почему вы пытаетесь потребовать, чтобы модуль в Angular? это для узла. Я имею в виду, зачем вам это нужно? – NietzscheProgrammer

ответ

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-запросов в своем угловая, внешняя сторона. Таким образом, всякий раз, когда пользователь делает запрос к серверной, у вас есть доступ к их закодированной ID в JWT

+0

Вот что я пытался, но не работал. Любая идея о том, как использовать его с php backend? – celsomtrindade

3

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

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

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

+0

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

Смежные вопросы