javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

不使用Jad的Node.js + Express

是否可以在没有任何模板引擎的情况下使用express?

trans by 2020-08-11T18:14:00Z

express-如何在文件夹层次结构中使用__dirname上

我的应用程序结构为:

 /app
     /css
     /js
     ..
 /script
    /server.js

我正在尝试使用__dirname来指向/ app文件夹

app.use(express.static( __dirname + '/app'));

我真的不知道在网上搜索什么,请帮忙。

trans by 2020-08-11T05:49:24Z

json-将对象传递给节点+ express +玉中的客户端?

我在服务器上有一个非常重量级的查询,可以生成新的页面渲染,并且我希望将查询的一些结果传递给客户端(作为对象的javascript数组)。 基本上是这样,因此我不必稍后再进行单独的JSON查询即可获得相同的内容(通常是静态的)。 数据最终将是有用的,但最初没有用,因此我没有将其直接放入文档中。

app.get('/expensiveCall', function(req, res) {
    // do expensive call
    var data = veryExpensiveFunction();
    res.render('expensiveCall.jade', {
        locals: {
                data: data,
                }
        });
    });
});

数据是一个对象数组,最初只使用一些对象。 我想传递整个数据或传递一些子集(取决于情况)。 我的玉看起来像普通的玉,但我想加入一些类似的东西

<script type="text/javascript">
var data = #{data};
</script>

但这不起作用(它是一个对象数组)。

trans by 2020-08-09T18:56:57Z

javascript-MissingSchemaError:尚未为模型“ User”注册架构

在我的require('../models/User');文件中:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var userSchema = new Schema({
    (define schema)
});
...
(save user)
...
(check password)
...
mongoose.model('User', userSchema);

在我的require('../models/User');中,我有:

var mongoose = require('mongoose');
var User = mongoose.model('User');

引发错误:

MissingSchemaError: Schema hasn't been registered for model "User".

但是,如果在require('../models/User');中,我做了(在最后一行中)

module.exports = mongoose.model('User', userSchema);

然后在require('../models/User');中执行var User = mongoose.model('User');,则一切正常。

但这不应该,因为在require('../models/User');中,我正在执行var User = mongoose.model('User');,它可以完美地工作。

require('../models/User');语法在Ubuntu上不起作用,但在我的Mac上可用。

我该怎么办? 我如何解决它? 我查看了无数示例应用程序,包括MEAN,但没有任何真正的帮助。

trans by 2020-08-09T07:18:22Z

Node.js Express。 适用于bodyPars的大身材


我使用Express.js ver 4.2,并希望解析较大的帖子(150K-1M),但收到错误消息“请求实体太大”。 似乎限制为100K。我现在不打算在Express 4中更改限制。在Express 3.x中,我只是做了-

app.use(express.json({limit: '5mb'}));
app.use(express.urlencoded({limit: '5mb'}));

如何更改Express 4中的限制?

谢谢你的帮助。

trans by 2020-08-09T06:52:11Z

javascript-Node.js请求CERT_HAS_EXPIRED

我正在使用Mikeal的请求([https://github.com/mikeal/request)]向服务器发出https请求。 但是,我不断收到CERT_HAS_EXPIRED的授权错误。

request({
        url: 'https://www.domain.com/api/endpoint',
        strictSSL: false
    }, function(error, response, body) {
        if(!error && response.statusCode == 200) {
            res.json(JSON.parse(body));
        } else {
           res.json(response.statusCode, {'error': 'error'})
        }
});

我尝试将strictSSL设置为true和false,两者都输出相同的CERT_HAS_EXPIRED错误。 是什么导致此问题,并且有什么方法可以在nodejs中进行修复?

trans by 2020-08-09T05:34:41Z

javascript-如何在node.js(express.js)中获得浏览器语言?

用户请求一些页面,我想(在服务器端)知道他/她的浏览器中的语言是什么。 因此,我可以使用正确的消息来呈现模板。

在客户端,这很容易:

var language = window.navigator.userLanguage || window.navigator.language
trans by 2020-08-09T01:38:25Z

node.js服务器和带有express.js的HTTP / 2(2.0)

当前是否可以获取node.js HTTP / 2(HTTP 2.0)服务器? 以及Express.js的HTTP 2.0版本?

trans by 2020-08-07T07:20:28Z

node.js-在nodejs中序列化findAll排序顺序

我正在尝试使用sequelize从数据库中输出所有对象列表,如下所示,并希望在我在where子句中添加id时对数据进行整理。

exports.getStaticCompanies = function () {
    return Company.findAll({
        where: {
            id: [46128, 2865, 49569,  1488,   45600,   61991,  1418,  61919,   53326,   61680]
        },
        attributes: ['id', 'logo_version', 'logo_content_type', 'name', 'updated_at']
    });
};

但是问题是渲染后,所有数据按如下进行整理。

46128, 53326, 2865, 1488, 45600, 61680, 49569, 1418, ....

正如我发现的那样,它既没有按ID也没有按名称排序。 请帮我解决。

trans by 2020-08-07T05:38:29Z

node.js-SocketIO- GET [http:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = 1418187395022-0] 404(未找到)

我正在使用express的socketIO。

在我的项目中,我有一个登录页面和一个主页。当我成功登录后,我导航到localhost:3000 / home,我收到此错误:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=1418187395022-0 404 (Not Found)

我没有对app.js(express创建的项目)进行任何修改。

Index.js:

var express = require('express');
var router = express.Router();
var http = require('http');
var fs = require('fs');
var io = require('socket.io')(http);
/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: 'Express' });
});

router.get('/home', function(req, res) {
  res.render('home', { title: 'Express' });
});

io.on('connection', function(socket){
    console.log("User Connected");
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
    console.log("Message");
  });
   socket.on('disconnect', function(msg){
    console.log("User DisConnected");
  });

});

router.post('/authenticate', function(req, res) {
    fs.readFile("./public/Verification/Users.json", "utf8", function (err, data) {
        if (err) 
            console.log(err);
        else{
            var result = JSON.parse(data);
            for(var i=0;i<result.Users.length;i++){
                if(req.body.username == result.Users[i].username && req.body.password ==     result.Users[i].password){
                    console.log("Success!!!!!!!!!!!!!!");
                    res.location("home");
                    res.redirect("home");
                }
            }
        }
        });
});

module.exports = router;

每当我导航到localhost:3000 / home时,都会出现此错误。 我对socketIO和express都是陌生的。请告诉我我是否缺少什么。

谢谢

编辑:

在我的layout.jade中,我这样定义了socketio:

script(src='https://cdn.socket.io/socket.io-1.2.0.js')
trans by 2020-08-06T23:25:00Z

node.js-在sails.js中创建配置变量?

我正在将我的一个应用程序从Express转换为sails.js-是否可以在Sails中执行类似的操作?

从我在Express中的app.js文件中:

var globals = {
    name: 'projectName',
    author: 'authorName'
};

app.get('/', function (req, res) {
    globals.page_title = 'Home';
    res.render('index', globals);
});

这使我可以在每个视图上访问这些变量,而不必将其硬编码到模板中。 虽然不确定在Sails中如何/在哪里做。

trans by 2020-08-06T10:15:14Z

node.js-不允许POST请求-405不允许-nginx,即使包含标头

我在尝试在应用程序中执行POST请求时遇到问题,我进行了很多搜索,但找不到解决方案。

因此,我有一个nodeJS应用程序和一个网站,并且尝试使用此网站中的表单进行POST请求,但我总是这样做:

enter image description here

在控制台中,我看到:

    Uncaught TypeError: Cannot read property 'value' of null 
Post "http://name.github.io/APP-example/file.html " not allowed

在这行代码中:

file.html:

<form id="add_Emails" method ="POST" action="">

    <textarea rows="5" cols="50" name="email">Put the emails here...
    </textarea>

        <p>
        <INPUT type="submit" onclick="sendInvitation()" name='sendInvitationButton' value ='Send Invitation'/>
        </p>


</form>

<script src="scripts/file.js"></script>

file.js:

function sendInvitation(){

    var teammateEmail= document.getElementById("email").value;

我读了很多帖子和跨域文档,但是没有用。研究资料1:[http://enable-cors.org/server.html]研究资料2:[http://www.w3.org/TR/2013/CR-cors-20130129/#http-access-control-max-age]

我现在在做什么:

我正在尝试从服务器的其他域POST:

POST请求:[http://name.github.io/APP-example/file.html],github存储库

POST LISTENER:“ [http://xxx.xxx.x.xx:9000 / email],服务器本地主机(x->我的IP地址)

因此,我在其他文件中也遇到了同样的问题,但我修复了此问题,并将此代码放在每个路由的开头:

var express = require('express');
var sha1 = require('sha1'); 

var router = express.Router(); 
var sessionOBJ = require('./session');

var teams = {} 
var teamPlayers = []

router.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT, GET,POST");
  next();
 });

然后我就解决了

现在,我遇到了同样的问题,但是在此文件中,唯一的区别是我处理SMTP和电子邮件,因此我发布了一封电子邮件,并向POST请求中收到的该电子邮件发送了一封电子邮件。

该代码在POSTMAN上完全可以正常工作,因此,当我在POSTMAN上进行测试时,它可以正常工作并且可以发布。

我在下面包含了此代码,而不是我显示的第一个代码,但它不能正常运行:

router.all('*', function(req, res, next){
            res.header("Access-Control-Allow-Origin", "*")
            res.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
            res.header("Access-Control-Allow-Headers", "Origin, Content-Type, Accept")
            res.header("Access-Control-Max-Age", "1728000")
            next();
        });

有人知道如何解决吗?

谢谢。

trans by 2020-08-05T17:35:42Z

express-“ ensureAuthentication”“ isAuthenticated”护照功能的文档?

我已经寻找了一段时间,但是找不到确切的文档来源。 当我搜索这些内容时,第一个Google搜索结果就是StackOverflow。

还有其他类似的中间件功能吗?

trans by 2020-07-30T04:15:35Z

node.js-如何在同一系统上组织多个Express服务器?

我正在使用一台服务器托管多个Node.js Web应用程序,这些Web应用程序分布在多个域中。 我目前的做法是在不同端口上为每个应用程序运行Express服务器,并运行基本服务器,该服务器简单地将请求路由(重定向)到正确的端口/ Express服务器。 这可行,但是这意味着我的基本服务器正在路由每个HTTP请求(并通过手动重定向它),并且我的用户看到我的应用托管在[hostname.com]:8000。

经过一番研究,我发现可以使用http-proxy来满足我的路由需求,但是我仍然想知道是否有在同一系统上运行多个Express服务器的最佳实践。 这是我打算做的事情:

每个Web应用程序都有其自己的文件夹,具有完整的Express文件夹结构(app.js,路线,视图等)。应用程序将按域分组,因此示例文件夹结构为:

    hostname.com/
        app.js
        routes/
        views/
        ...
        app1/
            app1.js
            routes/
            views/
            ...
        app2
        ...
    hostname2.com/
        app.js
        routes/
        views/
        ...

我必须分别使用node(或永久使用,我当前正在使用)运行每个app.js,并且每个内部都必须使用不同的端口,跨应用程序重定向指向该端口。 目标应用。

所以,那是我目前的计划。 它有什么问题,我应该尝试避免哪些陷阱?最重要的是,是否存在针对此问题的既定解决方案-使用Node.js / Express在同一系统上托管多个Web应用程序的问题?

编辑:我确实打算最终使用WebSockets和HTTPS,并且我的安装程序可以支持的带宽量对我而言并不重要-这是一台开发服务器(至少现在是这样)。 感谢David Ellis提出了WebSockets问题。

第二次编辑:感谢EhevuTov和David Ellis的回答,这两者都大有帮助。 我仍在为我的应用程序确定总体结构,并且看起来这个StackOverflow问题已解决了该问题的更多细节

第三次编辑:自发布此问题以来,我已经采取了一些措施(尽管我还有很长的路要走)。 在我的GitHub存储库中签出该文件,该文件利用了我从该问题的答案中学到的知识!

trans by 2020-07-27T16:33:11Z

node.js-如何使用猫鼬Promise-旺

有人可以给我一个关于如何将Promise与猫鼬一起使用的示例。 这是我所拥有的,但无法正常工作:

app.use(function (req, res, next) {
  res.local('myStuff', myLib.process(req.path, something));
  console.log(res.local('myStuff'));
  next();
});

然后在myLib中,我将得到以下内容:

exports.process = function ( r, callback ) {
  var promise = new mongoose.Promise;
  if(callback) promise.addBack(callback);

  Content.find( {route : r }, function (err, docs) {
     promise.resolve.bind(promise)(err, docs);

  });

  return promise;

};

在某个时候,我希望我的数据能够存在,但是我该如何访问或获取它呢?

trans by 2020-07-26T14:58:35Z

javascript-Node.js表示的Error对象公开哪些属性?

我想知道在错误处理中使用nodejs的Error对象表示的功能是什么?

错误调用new Error('NotFound')console.log仅显示[Error: NotFound],这是因为重写了.toString()方法吗? 如何找到这些对象公开的属性和功能?

trans by 2020-07-26T13:47:49Z

node.js-如何在MongoDB collection.find()上获取回调

当我在MongoDB / Node / Express中运行collection.find()时,我想在完成时得到一个回调。 正确的语法是什么?

 function (id,callback) {

    var o_id = new BSON.ObjectID(id);

    db.open(function(err,db){
      db.collection('users',function(err,collection){
        collection.find({'_id':o_id},function(err,results){  //What's the correct callback synatax here?
          db.close();
          callback(results);
        }) //find
      }) //collection
    }); //open
  }
trans by 2020-07-26T05:33:44Z

node.js-如何检查节点是否存在模块以及是否存在要加载的模块?

我需要检查文件/(自定义)模块js是否存在于某些路径下。 我试过像

var m = require('/home/test_node_project/per');
但是当路径中没有per.js时,它将引发错误。我想跟 fs如果文件存在,但我不想在没有后缀的情况下添加'.js'作为后缀。如何检查节点是否存在模块以及是否存在要加载的模块?

trans by 2020-07-25T16:47:33Z

javascript-找不到socket.io.js

由于某种原因,我的节点服务器无法服务路由/socket.io/socket.io.js,我总是收到404错误。
我尝试编译不同的节点版本(当前版本为0.6.13,该版本也可以在实际工作的服务器上运行)。
从app.js中,我得到info: socket.io started,并且在尝试调用socket.io.js时没有错误。

我从本地主机和端口8000尝试,我使用express框架

这是来自app.js的代码:

var express = require('express')
  , app = require('express').createServer()
  , io = require('socket.io').listen(app, { log: true });

app.listen(8000);

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

io.sockets.on('connection', function (socket) {
   // all other stuff here
trans by 2020-07-25T11:12:09Z

如何在express和socket.io中使用护照?

我目前正在尝试为我的node.js应用设置基本的身份验证系统。 现在,我使用快递(3.0.0rc5),通行证(0.1.12)和socket.io(0.9.10),将Mongoose作为会话数据存储。 我也一直在玩deserializeUser,但是我不喜欢兑现承诺。

现在的情况:

通过护照(facebook策略)的身份验证成功,重定向后在客户端上设置了deserializeUser cookie,我能够在数据库中看到会话文档。 我可以通过socket.handshake.headers.cookie访问socket.io中的会话cookie。

如果我正确理解了护照概念,则在成功致电deserializeUser之后,可以将其添加到会话中。 就我而言,最重要的信息是电子邮件,因此我通过以下方式设置了序列化程序:

passport.serializeUser(function(user, done) {
  done(null, user.email);
});

现在,我只需要在我的socket.io事件中使用cookie信息来从会话中提取电子邮件地址。

var connect = require('connect'),
    parseSignedCookie = connect.utils.parseSignedCookie,
    cookie            = require('express/node_modules/cookie');

io.on('connection', function(socket) {
    if(socket.handshake.headers.cookie) {
        var cookie = cookie.parse(socket.handshake.headers.cookie);
        var sessionID = parseSignedCookie(cookie['connect.sid'], 'secret');
    }
});

passport.deserializeUser(function(id, done) {
    // so, what is supposed to be done here?
});

因此,如果我没记错的话,现在的任务是使用deserializeUser访问相应的电子邮件地址。

我该怎么办? 任何指针都受到高度赞赏。

trans by 2020-07-25T11:01:24Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 下一页 共14页