标签: mean-stack

在 Express 中设置默认响应标头

我正在开发一个在 MEAN 堆栈上运行的小应用程序,但遇到了一个恼人的问题:我的后端应用程序(带有Express 的Node )正在运行http://localhost:3000并且工作得很好,但是我的前端客户端应用程序(带有 AngularJS 的 Javascript)正在运行http://localhost:8000,这意味着从 Angular 发送的请求会被接收和响应,但一旦到达就会被拒绝,因为它们被解释为来自不同的来源。

通过让我的“向我展示所有东西”方法看起来像这样,我能够用相对较少的戏剧性来解决这个问题:

exports.index = function(req, res) {
  Region.find({}, function(err, docs) {
    if(!err) {
      res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8000');
      res.json(200, { regions: docs });
    } else {
      res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8000');
      res.json(500, { message: err });
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8000');行是我添加的一行,用于告诉浏览器可以接受响应并停止打扰我;现在的问题是我必须将这个愚蠢的行添加到从任何地方发送的每个响应中,而且我确信我必须缺少某种方法来更改默认标头以Access-Control-Allow-Origin永远包含该条目。

在一个完美的世界中,我可以根据代码在什么环境中执行来打开和关闭它,但我完全满足于 app.js 中的一个代码块,我至少可以删除一次试图追踪 75 个res.setHeader. 我认为必须有一种方法可以改变.json隐藏res在其基础后面的方法,但是文档没有提供任何关于我如何做到这一点的见解,更不用说这是否是一个糟糕的主意。有什么想法吗?

编辑

我认为(正如建议的那样)配置应用程序级中间件是关键。这是我添加到 app.js 文件中的代码:

// allow CORS:
app.use(function (req, res, next) { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js cors express mean-stack

5
推荐指数
1
解决办法
6948
查看次数

已成功上传到 Heroku Local,但在推送到 Heroku live 时出现 503 错误

因此,在我的 MEAN 堆栈应用程序中更改文件和移动代码之后,我终于将它加载到 Heroku 本地。现在的问题是当我将此应用程序推送到我的 Heroku 遥控器并要求打开 Heroku 时,该应用程序出现此错误....

加载资源失败:服务器响应状态为 503(服务不可用)

下面是 Heroku 上应用程序的链接……有什么可以帮助或暗示我正确方向的吗?

https://istressless.herokuapp.com/

heroku http-status-code-503 mean-stack

5
推荐指数
1
解决办法
2万
查看次数

JWT 负载中应该包含多少信息?

我正在使用 Mean 堆栈构建一个抽认卡应用程序,并尝试模仿本教程https://thinkster.io/mean-stack-tutorial#wiring-everything-up中遵循的过程。

当新用户注册时,我想在用户对象中返回该用户的信息:正在研究的当前和最近的抽认卡,正在研究的当前和最近的卡片等。

我的问题是这些信息中有多少应该进入 JWT 有效负载?

在 thinkster.io 教程中,JWT 的负载仅包含 user_ID、用户名和到期日期。我担心额外的信息是否不应该进入 JWT,因为它会使 JWT 变得太大。那么我是否只是将 JWT 与用户对象一起发回,该对象在使用 mongoose.save 方法保存用户后返回?这个策略听起来很像以下引述:

https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/#token-size

每次发出 API 请求时,您都必须在 Authorization 标头中发送令牌。

根据您在该令牌中存储的信息量,它可能会变大。另一方面,会话 cookie 通常只是一个标识符(connect.sid、PHPSESSID 等),其余内容位于服务器上(如果您只有一台服务器,则在内存中;如果您在服务器上运行,则为数据库)农场)。

现在,没有什么可以阻止您使用令牌实现类似的机制。令牌将包含所需的基本信息,并且在服务器端,您可以在每个 API 调用中使用更多数据来丰富它。这与 cookie 的作用完全相同,不同之处在于您有额外的好处,即现在这是一个有意识的决定,您拥有完全的控制权,并且是您代码的一部分。

我试图从 thinkster.io 模仿的 /register 路由代码如下:

router.post('/register', function(req, res, next){
  if(!req.body.username || !req.body.password){
    return res.status(400).json({message: 'Please fill out all fields'});
  }

  var user = new User();

  user.username = req.body.username;

  user.setPassword(req.body.password)

  user.save(function (err){
    if(err){ return next(err); }

    return res.json({token: user.generateJWT()})
  });
});
Run Code Online (Sandbox Code Playgroud)

我可以编辑底部的保存方法部分,使其看起来像这样:

user.save(function (err, user){ …
Run Code Online (Sandbox Code Playgroud)

node.js jwt mean-stack

5
推荐指数
1
解决办法
2140
查看次数

Heroku 混合内容 HTTPS/HTTP 问题

我将我的应用程序部署到 Heroku,但在 Chrome 控制台中不断收到此错误:

bundle.js:11892 Mixed Content: The page at 'https://***.herokuapp.com/#/login' 
was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint    
'http://localhost:3000/login'. This request has been blocked; the content must 
be served over HTTPS.(anonymous function) @ bundle.js:11892sendReq @ 
bundle.js:11653serverRequest @ bundle.js:11363processQueue @ 
bundle.js:16097(anonymous function) @ bundle.js:16113Scope.$eval @ 
bundle.js:17365Scope.$digest @ bundle.js:17181Scope.$apply @   
bundle.js:17473(anonymous function) @ bundle.js:25159defaultHandlerWrapper @ 
bundle.js:3592eventHandler @ bundle.js:3580
bundle.js:11892 XMLHttpRequest cannot load http://localhost:3000/login. Failed     
to start loading.
Run Code Online (Sandbox Code Playgroud)

这是我的服务器文件:

let express = require('express');
let app = express();
let publicRouter = …
Run Code Online (Sandbox Code Playgroud)

javascript https heroku mean-stack

5
推荐指数
1
解决办法
3035
查看次数

使用 Java 使用 REST API

我有一个位于远程服务器上的管理 Web 应用程序。这个应用程序是使用 MEAN 堆栈编写的,我有一个连接到 Web 应用程序所需的所有 RESTful 路由的列表。

我正在编写一个 Java 客户端应用程序,它需要从这个管理应用程序发送和接收数据。如果我有服务器的 IP 地址和 REST 路由,如何将客户端连接到 Web 应用程序?

我想我需要提供到服务器和 REST API 文件的 URL 连接,然后只调用路由函数PUTGET.

java rest mean-stack

5
推荐指数
1
解决办法
2万
查看次数

如何在节点 js 中以编程方式生成 pdf 的密码保护

我正在研究均值堆栈项目。在这方面,我需要动态生成 pdf 并将其发送到用户电子邮件 ID。但是pdf应该有密码保护,当用户输入密码时,他可以看到pdf的内容。我正在使用 html-pdf 节点模块来生成 pdf,但我不知道如何使其受密码保护。请帮助我任何人。

下面是我生成 pdf 的代码:

// This Is Use To Genrate Pdf.
    app.post("/upload", function(req, res) {
        var html = req.body.html;
        var loanId = req.body.loanid;
        var options = { format: 'Letter'};
        var pdfname = 'loan_'+loanId+'.pdf';
        pdf.create(html, options).toFile('../client/app/loanpdf/'+pdfname, function(err, res) {
          if (err) return console.log(err);
        });
        res.status(200).send({'pdfname':pdfname});
    });
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

node.js mean-stack

5
推荐指数
0
解决办法
2562
查看次数

从客户端或服务器上传到 S3?

我应该直接从客户端将我的文件上传到 S3 还是将它们发送回我的服务器并从那里上传?

每种方法的优缺点是什么?哪个更常用?

如果相关,我正在使用 MEAN 堆栈。

amazon-s3 amazon-web-services node.js angularjs mean-stack

5
推荐指数
1
解决办法
2129
查看次数

Uncaught SyntaxError: Unexpected token < 在索引 html 中调用的每个 js 文件上

我正在使用均值堆栈来构建网站,在测试时,chrome 返回如下错误:

未捕获的语法错误:意外标记 < angular.js:1。

我不知道出了什么问题,我该怎么办。

在此处输入图片说明

这是我的应用程序的目录: E-study -client -app -components -all the libraries are here. -index.html -controllers.js -node_modules -server -config -server.js

我在 E-study 中运行服务器,例如:node server/config/server.js

index.html 中的脚本是<script src="client/components/angular/angular.js"></script>

只是不知道为什么在浏览器中打开时所有js文件都更改为index.html。

javascript mean-stack

5
推荐指数
1
解决办法
9140
查看次数

找不到有效的 Gruntfile

我已按照此链接尝试mean.js在 ubuntu 服务器上安装堆栈。

关于grunt,在/opt/mean,我做了

sudo npm install -g bower grunt-cli
sudo npm install grunt --save-dev
sudo npm install
Run Code Online (Sandbox Code Playgroud)

但是,grunt还是grunt jshint在文件夹里面给出

找不到有效的 Gruntfile。有关如何配置 grunt 的更多信息,请参阅入门指南: http ://gruntjs.com/getting-started 致命错误:无法找到 Gruntfile。

请注意,npm start可以正常工作,并且http://server_domain_or_IP:3000可以显示示例应用程序。

有谁知道如何修复 grunt 错误?

node.js gruntjs mean-stack

5
推荐指数
1
解决办法
1万
查看次数

NodeJS :: TypeError:无法读取未定义的属性“first_name”

我正在从教程中学习 MEAN 堆栈。当我在本地主机上尝试时,出现错误。

类型错误:无法读取未定义的属性“first_name”

在 router.post (/var/www/html/mean/contactlist/routes/route.js:17:28)

我在网上找到了一些类似的问题。但我没有找到正确的解决方案。

这是我的app.js文件

//importing modules
var express =  require('express');
var mongoose = require('mongoose');
var bodyparser = require('body-parser');
var cors = require('cors');
var path = require('path'); //core module 


// calling express method
var app = express(); 


//connect to mongodb
mongoose.connect('mongodb://localhost/27017/contactlist');

//on connection
mongoose.connection.on('connected', () => {
    console.log("connected to database database mongodb @ 27017 ");
});

mongoose.connection.on('error', (err) => {

    if(err){
        console.log('Error in Database connection : ' + err);
    }
});

//adding middleware cors …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express mean-stack

5
推荐指数
1
解决办法
4849
查看次数