javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

node.js-Node中的模块和包之间的区别?

我是Node noob。 Node.js中的“程序包”和“模块”之间有什么区别?

trans by 2020-07-03T17:27:05Z

node.js-Nginx上游过早关闭连接,同时从上游读取响应标头,以处理大型请求

我正在使用nginx和节点服务器来处理更新请求。 当我请求大数据更新时,我收到网关超时。 我从nginx错误日志中看到了此错误:

2016/04/07 00:46:04 [错误] 28599#0:* 1个上游过早关闭的连接,同时从上游读取响应标头,客户端:10.0.2.77,服务器:gis.oneconcern.com,请求:“ GET / update_mbtiles / atlas19891018000415 HTTP / 1.1”,上游:“ [http://127.0.0.1:7777/update_mbtiles/atlas19891018000415”,]主机:“ gis.oneconcern.com”

我搜索了该错误并尝试了所有可能的方法,但仍然收到该错误。

我的nginx conf具有以下代理设置:

    ##
    # Proxy settings
    ##

    proxy_connect_timeout 1000;
    proxy_send_timeout 1000;
    proxy_read_timeout 1000;
    send_timeout 1000;

这是我的服务器的配置方式

server {
listen 80;

server_name gis.oneconcern.com;
access_log /home/ubuntu/Tilelive-Server/logs/nginx_access.log;
error_log /home/ubuntu/Tilelive-Server/logs/nginx_error.log;

large_client_header_buffers 8 32k;
location / {
    proxy_pass http://127.0.0.1:7777;
    proxy_redirect off;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $http_host;
    proxy_cache_bypass $http_upgrade;
}

location /faults {
    proxy_pass http://127.0.0.1:8888;
    proxy_http_version 1.1;
    proxy_buffers 8 64k;
    proxy_buffer_size 128k;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

}

我正在使用nodejs后端在aws服务器上服务请求。 仅当更新花费很长时间(大约3-4分钟)时才会显示网关错误。 较小的更新没有任何错误。 任何帮助将不胜感激。

节点js代码:

app.get("/update_mbtiles/:earthquake", function(req, res){
var earthquake = req.params.earthquake
var command = spawn(__dirname + '/update_mbtiles.sh', [ earthquake, pg_details ]);
//var output  = [];

command.stdout.on('data', function(chunk) {
//    logger.info(chunk.toString());
//     output.push(chunk.toString());
});

command.stderr.on('data', function(chunk) {
  //  logger.error(chunk.toString());
 //   output.push(chunk.toString());
});

command.on('close', function(code) {
    if (code === 0) {
        logger.info("updating mbtiles successful for " + earthquake);
        tilelive_reload_and_switch_source(earthquake);
        res.send("Completed updating!");
    }
    else {
        logger.error("Error occured while updating " + earthquake);
        res.status(500);
        res.send("Error occured while updating " + earthquake);
    }
});
});

function tilelive_reload_and_switch_source(earthquake_unique_id) {
tilelive.load('mbtiles:///'+__dirname+'/mbtiles/tipp_out_'+ earthquake_unique_id + '.mbtiles', function(err, source) {
    if (err) {
        logger.error(err.message);
        throw err;
    }
    sources.set(earthquake_unique_id, source); 
    logger.info('Updated source! New tiles!');
});
}

谢谢。

trans by 2020-07-03T17:00:27Z

node.js-Node.js- console.error与util.debug

我注意到node.js既有console.errorutil.debug,也有console.logutil.log

除了console。*功能之外,还有其他功能是否更强大? API表示它们分别写入stdout和stderr。

如果没有区别,我应该使用哪个,为什么?

trans by 2020-07-03T06:15:45Z

编码-Node.js从Web获取图像并使用base64进行编码

我正在尝试从网上获取图片并使用base64对其进行编码。

到目前为止,我基本上是:

var request = require('request');
var BufferList = require('bufferlist').BufferList;

bl = new BufferList(),

request({uri:'http://tinypng.org/images/example-shrunk-8cadd4c7.png',responseBodyStream: bl}, function (error, response, body) 
{
    if (!error && response.statusCode == 200) 
    {
        var type = response.headers["content-type"];
        var prefix = "data:" + type + ";base64,";
        var base64 = new Buffer(bl.toString(), 'binary').toString('base64');
        var data = prefix + base64;
        console.log(data);
    }
});

这似乎与解决方案非常接近,但我无法完全解决该问题。 它识别数据类型并给出输出:

data:image/png;base64

但是,缓冲区列表“ bl”似乎为空。

提前致谢!

trans by 2020-07-03T04:31:32Z

javascript-如何从Express(Node.js)中的表单获取数据

我想获取使用表单从页面传递的数据,并在重定向的页面中使用该数据。

我的客户方有此表格。

    <form action="game" method="get">
                    <input type="text" name="name"/>
                    <input type="submit" />
    </form>

我的服务器上有这个脚本。

app.get('/game',function(req,res){
res.sendfile(__dirname + '/game.html'); 
});

请帮助。

trans by 2020-07-03T02:48:28Z

javascript-如何处理node.js中的POST请求

我正在尝试处理发送到我的node.js服务器的发布请求。名称为server.js的JavaScript文件在浏览器上显示一个表单。 我希望在将表单值发布到node.js后端后对其进行访问。

该表单包含用户名,存储库和分支。 提交表单后,我想将此数据显示回给用户。

server.js代码:

var http = require('http');

http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('<html><body>'
    + '<h1>XYZ Repository Commit Monitor</h1>'
    + '<form method="post" action="." enctype="application/x-www-form-urlencoded"><fieldset>'
    + '<div><label for="UserName">User Name:</label><input type="text" id="UserName" name="UserName" /></div>'
    + '<div><label for="Repository">Repository:</label><input type="text" id="Repository" name="Repository" /></div>'
    + '<div><label for="Branch">Branch:</label><input type="text" id="Branch" name="Branch" value="master" /></div>'
    + '<div><input id="ListCommits" type="submit" value="List Commits" /></div>'
    + '</fieldset></form>'
    + '</body></html>');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');
trans by 2020-07-02T08:05:08Z

javascript-以编程方式将参数传递给grunt任务?

我有一个呼唤任务,称为其他呼唤任务。 我想用编程确定的参数调用子任务。 这可能吗? 我花了一些时间来研究lib / grunt.js和lib / grunt / task.js,但无法弄清楚。

我正在使用grunt-compass和在Gruntfile.js中指定的以下参数:

compass: {
  default_options: {
    src: 'components/201',
    dest: 'build',
    require: ['zurb-foundation']
  }
}

我希望能够在运行时覆盖它们:

任务/ my-task.js:

// simplified example
module.exports = function(grunt) {
  grunt.registerTask('foo', 'bar', function() {
    var chooseDest = doWork();
    grunt.task.run('compass', {src: 'src', dest: chooseDest});
  });
};

以供参考:

$ grunt --version
grunt-cli v0.1.6
grunt v0.4.0rc6
trans by 2020-07-01T16:46:02Z

node.js-猫鼬填充与对象嵌套

使用猫鼬填充和直接对象包含之间是否有性能差异(查询的处理时间)? 什么时候应该使用?

猫鼬人口的例子:

var personSchema = Schema({
  _id     : Number,
  name    : String,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
});

猫鼬对象嵌套示例:

var personSchema = Schema({
  _id     : Number,
  name    : String,
  stories : [storySchema]
});

var storySchema = Schema({
  _creator : personSchema,
  title    : String,
});
trans by 2020-07-01T13:55:15Z

Javascript-为什么模块级return语句在Node.js中有效?

当我回答另一个问题时,我遇到了带有顶级return语句的Node.js模块。 例如:

console.log("Trying to reach");
return;
console.log("dead code");

这可以正常工作并且没有错误并可以打印:

Trying to reach

在标准输出中而不是“ return”中-return实际上已停止执行。

但是根据ECMAScript 5.1中return语句的规范,

语义学

如果ECMAScript程序包含的返回语句不在return内,则在语法上被认为是错误的。

在上面显示的程序中,return没有任何功能。

那为什么不扔呢?

trans by 2020-07-01T09:46:39Z

在node.js中扩展TypeScript全局对象

我有一个node.js应用,该应用将一些配置信息附加到Global对象:

global.myConfig = {
    a: 1,
    b: 2
}

TypeScript编译器不喜欢这样,因为Global类型没有名为myConfig的对象:

TS2339:类型“ Global”上不存在属性“ myConfig”。

我不想这样做:

global['myConfig'] = { ... }

如何将Global类型扩展为包含myConfig,或者只是告诉TypeScript关闭并信任我? 我希望第一个。

我不想更改Global内部的声明。我看到了此SO帖子并尝试了以下操作:

declare module NodeJS  {
    interface Global {
        myConfig: any
    }
}

作为扩展现有Global接口的一种方法,但似乎没有任何效果。

trans by 2020-06-30T22:35:26Z

node.js-Ansible将以什么用户身份运行我的命令?

背景

我的问题似乎很简单,但实际上却变得更加复杂。

基本上,我非常讨厌手动维护服务器(后台发出尖叫声),因此我决定现在该寻找一种使服务器管理员更易上手的方法了。 那是我找到Ansible的时候。 很好吧? 对于我想自动化的所有事情,制作bash脚本(响亮的尖叫声)肯定是不错的选择。

有什么问题?

我很难确定Ansible剧本的哪个用户可以运行某些功能。 我还需要指定某些任务将以哪些用户身份运行的功能。 以下是一些特定的用例:

克隆另一个用户的仓库:

我这样做的目的是从另一个用户运行我的node.js Web应用程序,我们将其称为bill(该用户只能使用sudo运行我创建的脚本来启动节点服务器,而不是root或我的用户, 对所有命令使用sudo)。 为此,我需要具有Ansible的git模块将我的git repo复制为bill的能力。 我该怎么办?

知道Ansible将如何生根:

据我了解,您可以通过定义“用户”和剧本文件的开头来设置Ansible用户将连接到您要维护的服务器。 这是我不明白的:如果我告诉它通过用户名joe进行连接,并要求它通过apt模块更新软件包,它将如何获得root权限? Sudo通常会提示我输入密码,我更希望这样保持密码(以确保安全)。

最终要求

我已经搜索了Ansible文档,做了一些(我认为是彻底的)谷歌搜索,通常只是试图自己解决这个问题,但是这些信息仍然使我难以理解。

我对Ansible并不陌生,虽然它很简单,但如果我能准确了解Ansible的运行方式,运行的用户以及在不同时间指定使用哪个用户的方式,我将受益匪浅。

提前谢谢你吨

trans by 2020-06-30T17:28:00Z

node.js-处理猫鼬验证错误–在哪里以及如何进行?

我试图决定如何处理猫鼬中的验证错误。

使用节点验证器的自定义错误消息

我已经使用node-validator定义了自己的验证规则,例如:

UserSchema.path('username')
  .validate(function (username) {
    return validator.check(username).notEmpty()
  }, 'Username cannot be blank')

这将产生如下所示的错误:

  username: 
   { message: 'Validator "Username cannot be blank" failed for path username',
     name: 'ValidatorError',
     path: 'username',
     type: 'Username cannot be blank' },

使用猫鼬验证器

但是,node-validator提供了自己的错误消息。 如果我使用mongoose-validator节点模块将node-validator直接插入到我的架构中,那么我可以直接使用以下错误消息:

var UserSchema = new Schema({
  name: { type: String, validate: [validate('notEmpty')] }
});

这将生成如下错误消息:

  name: 
   { message: 'Validator "String is empty" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'String is empty' } }

我也可以在此处提供自定义错误消息:

var UserSchema = new Schema({
  name: { type: String, validate: [validate({message: 'Name cannot be blank' }, 'notEmpty')] }
});

猫鼬required国旗

猫鼬允许您根据需要定义一个字段:

var UserSchema = new Schema({
  name: { type: String, required: true }
});

这将生成如下错误消息:

  name: 
   { message: 'Validator "required" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'required' } }

问题

这些验证器似乎希望您使用其内置的错误消息。 例如,我想将字段声明为required,如上所示,但是找不到自定义错误消息的方法。 mongoose-validator模块直到最近才支持自定义消息,这使我认为它们在模型级别是一种反模式。

实施这些验证器的最佳方法是什么? 我应该让他们产生自己的错误,然后以某种方式解释它们吗?

trans by 2020-06-30T17:07:57Z

javascript-require('babel / register')不能

我有使用Babel transpiler在客户端上用ES6编写的同构应用程序。 我希望我的快速服务器具有与客户端代码相同的ES6语法。

不幸的是require('babel/register')无法正常工作。

server.js

require('babel/register'); // doesn't work
// require('babel-core/register); doesn't work..

const env = process.env.NODE_ENV || 'development';
const port = process.env.NODE_PORT || 1995;

const http = require('http');
const express = require('express');
const address = require('network-address');

let app = express();

app.set('port', port);
app.use(express.static(path.join(__dirname, 'public')));

app.get('*', (req, res) => {
   res.send('Hello!');
});

http.createServer(app).listen(app.get('port'), function () {
   console.info('Demo app is listening on "%s:%s" env="%s"', address(), app.get('port'), env);
});
trans by 2020-06-30T15:04:06Z

Node.JS中的基本HTTP身份验证?

我正在尝试使用与Joyent相似的NodeJS编写REST-API服务器,并且一切正常,除非我无法验证普通用户的身份验证。 如果我跳到终端并执行curl -u username:password localhost:8000 -X GET,则无法在NodeJS http服务器上获取值username:password。 如果我的NodeJS http服务器类似于

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");

,是否应该在来自回调的req对象中某处获取值username:password?如何获得这些值而不必使用Connect的基本http auth?

trans by 2020-06-30T11:09:45Z

node.js-如何在AWS Lambda中等待异步操作?

我正在尝试在S3中处理上传的文件。 由于getObject是异步的,因此主函数在处理完成之前就结束了,AWS会在3-4秒内杀死lambda。

更糟糕的是,处理方法还具有异步操作-它进行http调用。

在较高的层次上,我的代码如下所示:

exports.handler = function(event, context) {
    // Get the object from the event and show its content type
    var bucket = event.Records[0].s3.bucket.name;
    var key = event.Records[0].s3.object.key;
    var params = {
        Bucket: bucket,
        Key: key
    };
    s3.getObject(params, function(err, data) {
        if (err) {
             ...
        } else {
            processFile(data.Body.toString(), 0);
            console.log("ok");
        }
    });
    //need to wait here till processFile is done
};

processFile = function(content, start) {
  ... build url to call
  http.get(url, function(res) {  
    console.log("Got response: " + res.statusCode + ");
    processFile(content, start + 1);
  });
}

我发现nodejs中存在异步,但亚马逊不包含它。 两者的require('async')或require('sleep)都会导致错误。

Lambda超时配置为60秒,但它会在3-4秒后退出。

trans by 2020-06-30T08:23:17Z

node.js将对象存储在Redis中

这就是事情-我想在特定键下的redis中存储本机JS(node.js)对象(闪存套接字引用)。 当我使用简单的client.set()进行此操作时,它将存储为字符串。 当我尝试获得价值时,我会得到[object Object]-只是一个字符串。

有机会工作吗? 这是我的代码:

  addSocket : function(sid, socket) {
    client.set(sid, socket);
  },

  getSocket : function(sid) {
    client.get(sid, function(err, reply) {
      // cant't get an object here. All I get is useless string
    });
  },
trans by 2020-06-30T06:48:17Z

node.js-Windows 7上某些软件包(sqlite3,socket.io)的npm安装失败,错误为MSB8020

当尝试在装有Visual Studio 2012(而不是2010)的Windows 7计算机上使用npm install socket.io安装某些node.js程序包(尤其是sqlite3和socket.io)时,出现一些类似以下的故障:

C:\ Program档案 (x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Platform.targets(35,5): 错误MSB8020:Visual Studio 2010(平台)的生成工具 找不到工具集='v100')。 使用v100构建 工具,请单击“项目”菜单或右键单击解决方案,然后 然后选择“更新VC ++项目...”。 将Visual Studio 2010安装到 使用Visual Studio 2010构建工具进行构建。

trans by 2020-06-27T13:41:18Z

express-如何知道node.js中的请求是http还是https

我正在使用nodejs和expressjs。 我想知道clientRequest对象中是否有request.headers.protocol之类的东西。 我想为Web链接构建baseUrl。 因此,如果请求是通过https完成的,我想在所有链接中保留https。

    var baseUrl = request.headers.protocol + request.headers.host;
trans by 2020-06-27T05:16:16Z

node.js-如何获取在NodeJS中执行的脚本的文件名?

如何获取NodeJS应用程序中正在执行的脚本的文件名?

trans by 2020-06-27T04:11:54Z

javascript-如果一个失败,则跳过规范中的后续Mocha测试

如果其中一个失败,我无法找到一种方法来阻止should navigate to test page and check title的某些部分运行

我正在使用should navigate to test page and check title,因此代码看起来可能与往常不同

describe("remote promises", function() {
  describe("browsing", function() {
    describe("getting page", function() {
      it("should navigate to test page and check title", function() {
        this.timeout(TIMEOUT);
        return browser.get("http://admc.io/wd/test-pages/guinea-pig.html").then(function() {
          return browser.title();
        }).then(function(title) {
          return assert.ok(~title.indexOf("I am a page title - Sauce Labs"), "Wrong title!");
        });
      })
      it("submit element should be clicked1", function() {
        this.timeout(TIMEOUT);
        return browser.elementById("submit").then(function(el) {
          return browser.clickElement(el);
        }).then(function() {
            return browser["eval"]("window.location.href");
          }).then(function(location) {
            assert.ok(~location.indexOf("http://"), "Wrong location!");
          });
      })
    });
    describe("clicking submit", function() {
      it("submit element should be clicked2", function() {
        this.timeout(TIMEOUT);
        return browser.elementById("submit").then(function(el) {
          return browser.clickElement(el);
        }).then(function() {
            return browser["eval"]("window.location.href");
          }).then(function(location) {
            assert.ok(~location.indexOf("http://"), "Wrong location!");
          });
      });
    });

  });
});

我想如果should navigate to test page and check title失败了submit element should be clicked1应该跳过

编辑:似乎我只是在使测试错误,将在删除问题之前等待一段时间

编辑:

正如我在评论中回答的那样-我已经在摩卡Google网上论坛中收到了此答案,但是还有其他一些我没有提到的限制-我正在使用grunt-simple-mocha并且我检查了代码-当我查看保释金时, 将选项传递给摩卡构造函数

我无法找到命令行中的选项传递到Suite实例的位置,而我看到的唯一行可能是

suite.bail(this.bail());

这对我来说很奇怪

我想我会在mocha github页面上打开问题,也许他们以后会用保释金设置扩展通过的选项,或者只是向我解释我做错了什么以及如何以其他方式解决我的问题

编辑:现在,根据[https://github.com/visionmedia/mocha/commit/f0b441ceef4998e570a794dcff951bf2330eb0c5]框内提供了最新的摩卡保释金选项。 感谢作者!

trans by 2020-06-26T19:55:10Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共174页