如何使用 angular2 设置 express-jwt 不阻塞 node_modules?

How to setup express-jwt with angular2 not blocking node_modules?

我正在制作一个 nodejs、angular2 应用程序。我想设置 JWT 身份验证,我正在使用 express-jwt 和 jsonwebtoken,我的所有路由和应用程序都按预期工作,只要我没有像那样设置 express-jwt 中间件。

app.use(expressJWT({secret: 'hey-hey'}).unless({path: ['/api/login', '/api/signup', '/home', '/signup', '/login', '/']}));

我收到以下错误:

GET http://localhost:3001/node_modules/core-js/client/shim.min.js 
login:13 GET http://localhost:3001/node_modules/zone.js/dist/zone.js 
login:14 GET http://localhost:3001/node_modules/reflect-metadata/Reflect.js 
login:15 GET http://localhost:3001/node_modules/systemjs/dist/system.src.js 
login:17 GET http://localhost:3001/systemjs.config.js 

基本上,我的应用仅通过身份验证无法访问这些路由。 我还尝试将这些路线包含在 unless:path 中,但没有帮助。

如何使用 jwt 使此路由可访问?

我在 unless 路径中添加了以下内容:/^\/node_modules\/.*/ , /^\/app\/.*/

这是一个正则表达式,它从 node_modules 和 app 目录中获取所有文件。

使用以下之一

app.use('/api', expressJwt({ secret: config.secret}).unless({path: [/^\/api\/members\/confirm\/.*/]}));

或者你也可以给 unless 函数:

var myFilter = function(req) {return true;}
app.use('/api', expressJwt({ secret: config.secret}).unless(myFilter));