Я знаю, что есть другие вопросы по этой проблеме, но я подготовил более 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>
;Со всеми этими попытками у меня были те же ошибки. Что я делаю не так?
Это код, который я использую прямо сейчас:
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. Проблема прямо сейчас заключается в том, чтобы кодировать/декодировать токен, когда пользователь входит в приложение.
Даже несмотря на все это, я все равно получаю ошибку. Вы, ребята, знаете, как это исправить?
Если вы хотите использовать require
от клиента, вам нужно использовать что - то вроде Browserify или WebPack (я определенно рекомендую последний).
Вы получаете эту ошибку, потому что, по сути, вы никогда не определяли require
любом месте вашего клиентского кода. Это репозиторий JWT не обеспечивает эту функциональность для вас.
Кроме того, глядя на документы для репозитория JWT, которые вы указали, кажется, что он ожидает, что вы будете использовать его в среде node.js (которая предоставляет общие require
для вас).
На стороне сервера (например, файл 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