AngularJs ReferenceError:需要未定义

cel*_*ade 2 javascript node.js angularjs

我知道关于这个问题还有其他问题,但我已经准备了 10 多个答案并尝试了每一个,但没有一个对我有用。

我收到此错误:Uncaught ReferenceError: require is not defined当我尝试加载外部纯 javascript 文件以在 JWT 中进行编码时。

这是我试图包含的文件require()https : //github.com/hokaccha/node-jwt-simple我用npm.

在我的代码中,我尝试了很多东西。

  • 包含在main.js与 grunt 的联系中;
  • <head><script src="path/to/folder"></script>;在里面手动加载
  • 使用 npm 为 nodeJs 安装 RequireJs;

通过所有这些尝试,我遇到了相同的错误。我究竟做错了什么?

这是我现在使用的代码:

索引.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 ...]
Run Code Online (Sandbox Code Playgroud)

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);
}])
Run Code Online (Sandbox Code Playgroud)

我的主要目标是处理基于 JWT 令牌的用户身份验证。现在的问题是在用户登录应用程序时对令牌进行编码/解码。

即使有了所有这些,我仍然收到错误消息。你们知道如何解决这个问题吗?

Jos*_*eam 5

如果要require在客户端使用,则需要使用Browserifywebpack 之类的东西(我绝对推荐后者)。

您收到该错误是因为实际上您从未require在客户端代码中定义任何地方。该 JWT 存储库不为您提供该功能。

此外,查看您提供的 JWT 存储库的文档,它似乎希望您在 node.js 环境(它require为您提供 commonjs )中使用它。