javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

node.js-为Express中的特定路由链接多个中间件

我只想验证一下内容,但无法在Express文档或在线文档中找到与此相关的内容(尽管我知道这是一个功能)。

我可以对其进行测试,但我实际上并没有一个很好的模板,希望听到社区的意见。

如果我这样定义快递路线:

app.get('/', function (req, res) {
  res.send('GET request to homepage');
});

我还可以定义一个中间件并直接加载它,例如

middleware = function(req, res){
  res.send('GET request to homepage');
});

app.get('/', middleware)

但是,我也可以链接这些路由中的至少一个来运行额外的中间件,例如身份验证,如下所示:

app.get('/', middleware, function (req, res) {
  res.send('GET request to homepage');
});

这些是无限连锁的吗? 如果愿意,可以在给定的路由上添加10个中间件功能吗? 我想查看app.get可以接受的参数,但是如前所述,我在文档中找不到它。

trans by 2020-02-29T09:12:49Z

javascript-为什么node.js是异步的?

实际上,没有人问过这个问题(从我得到的所有“建议”以及在我问这里之前的搜索中)。

那么为什么node.js是异步的呢?

经过一些研究,我得出的结论是:

诸如PHP和Python之类的语言是脚本语言(对于脚本语言而言,我可能是错的),而JavaScript并非如此。 (我想这是因为JS无法编译的事实?)

Node.js在单个线程上运行,而脚本语言使用多个线程。

异步意味着无状态,并且连接是持久的,而同步是(几乎)相反的。

也许答案在上面提到的某个地方,但是我仍然不确定。

我与此主题相关的第二个也是最后一个问题是:

可以将JavaScript制成同步语言吗?

PS。 我知道有些人会问“为什么要使JS同步?” 在您的回答中,但事实是我没有。 我只是问这些类型的问题,因为我敢肯定有更多的人在思考这样的问题,而不仅仅是我自己。

trans by 2020-02-29T08:48:33Z

单元测试-如何使用Mocha测试“正常”(非特定于节点的)JavaScript函数?

这看起来应该非常简单; 但是,经过两个小时的阅读和反复试验却没有成功,我承认失败并问你们!

我正在尝试将Mocha与Should.js结合使用以测试一些JavaScript函数,但是我遇到了范围界定问题。 我已经将其简化为最基本的测试用例,但是我无法使其正常工作。

我有一个名为global的文件,其中仅包含以下内容:

function testFunction() {
    return 1;
}

和我的global(位于同一文件夹中)内容:

require('./functions.js')

describe('tests', function(){
    describe('testFunction', function(){
        it('should return 1', function(){
            testFunction().should.equal(1);
        })
    })
})

该测试失败,并显示global

我能看到原因,因为我发现的大多数示例都将对象和函数附加到Node global对象或使用module.exports导出它们,但是使用这两种方法都意味着我的函数代码会在标准浏览器情况下抛出错误,在这种情况下 这些对象不存在。

那么,如何不使用特定于节点的语法访问与测试分开的脚本文件中声明的独立函数?

trans by 2020-02-23T01:11:15Z

javascript-如何在nodejs中获取以字节为单位的字符串长度?

如何在nodejs中获取以字节为单位的字符串长度? 如果我有一个字符串,例如:äáöü,则str.length将返回4。但是如何获得该字符串,形成多少字节呢?

提前致谢

trans by 2020-02-22T15:27:26Z

node.js-Forever + Nodemon一起运行

有什么办法可以使这两个软件包一起运行?

因此,基本上,我希望两全其美。 自动运行服务器(并在出现错误时重新启动),并在发生.js文件更改时自动更新。

trans by 2020-02-22T12:15:52Z

shell-如何从node.js命令行脚本启动浏览器

可能重复:
如何使用Node.js打开默认浏览器并导航到特定URL

我不知道这是否重要,但是我在OSX上。

我知道您可以通过输入以下命令从命令行本身启动浏览器:

open http://www.stackoverflow.com

但是有没有办法从nodejs命令行脚本内部打开浏览器?

trans by 2020-02-22T10:48:40Z

node.js-节点/表达式:使用Forever连续运行脚本时设置NODE_ENV

永远使用我的节点脚本启动时,如何将NODE_ENV变量/参数设置为“生产”

到目前为止,我得到了:

forever start -l forever.log -o out.log -e err.log -a app.js
trans by 2020-02-21T12:47:40Z

亚马逊网络服务-AWS S3 node.js SDK上传的文件和文件夹权限

我正在使用aws-sdk包将文件上传到S3:

fs.readFile(sourceFile, function (err, data) {
    if (err) { throw err; }

    s3.client.putObject({
        Bucket: bucketName,
        Key: 'Folder/image.jpg',
        Body: data
    }, function (res) {
            console.log('Successfully uploaded file.');
        })

});

我需要使上传的文件可以通过Cloudfront下载,如果我确定正确的话,我需要设置文件权限:每个人都可以打开/下载,Folder2应该公开(通过菜单“公开”)。 所以有两个问题:

1)如何设置\修改上传文件\文件夹的权限?

2)如何使用适用于node.js的AWS开发工具包公开文件夹。

trans by 2020-02-21T12:23:02Z

库-index.js在node.js项目中用于什么?

除了要求目录中所有文件的好方法(node.js要求文件夹中的所有文件?)之外,index.js主要用于什么?

trans by 2020-02-21T11:10:44Z

并行处理-node.js如何工作?

我不了解关于nodejs的几件事。 每个信息来源都说,由于缺少线程锁定和上下文切换,node.js比标准线程化Web服务器具有更高的可伸缩性,但是我想知道,如果node.js不使用线程,它将如何并行处理并发请求? 事件I / O模型意味着什么?

非常感谢您的帮助。谢谢

trans by 2020-02-20T23:46:35Z

node.js找不到模块'mongodb'

我正在经历我的第一个node.js项目。 我已经安装了mongodb,有一个server.js文件,当我尝试运行它时,出现此错误

module.js:340
    throw err;
         ^
Error: Cannot find module 'mongodb'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)

我很确定我已经安装了mongodb,我是来自C#Windows背景的UNIX新手,但是我认为这是未正确配置的路径吗?

trans by 2020-02-20T15:36:43Z

javascript-环境检测:node.js或浏览

我正在开发一个需要同时在客户端和服务器端工作的JS应用程序(在浏览器中的Javascript和Node.js中),并且我希望能够重用部分代码。 用于双方。

我发现if window? window.DocUtils = {} window.docX = [] window.docXData= [] else global.DocUtils= {} global.docX = [] global.docXData = [] 是只能在浏览器上访问的变量,而节点上的global是变量,因此我可以检测到代码在哪个环境中执行(假设没有脚本声明window变量)

他们是两个问题。

  1. 我应该如何检测代码在哪个浏览器中运行。 例如,此代码是否可以。 (此代码是内联代码,这意味着它被一些全局代码包围,可在两种环境中重复使用)

    if window?
        window.DocUtils = {}
        window.docX = []
        window.docXData= []
    else
        global.DocUtils= {}
        global.docX = []
        global.docXData = []
    
  2. 如何在两种环境中使用全局变量? 现在,我正在执行以下操作,但这确实感觉不对。

    if window?
        window.DocUtils = {}
        window.docX = []
        window.docXData= []
    else
        global.DocUtils= {}
        global.docX = []
        global.docXData = []
    
trans by 2020-02-20T09:42:04Z

Javascript-Node.js,Cygwin和Socket.io走进酒吧... Node.js抛出ENOBUFS,每个人都死了

我希望这里有人能帮到我,我自己并没有多大运气。 我正在Cygwin上运行node.js版本0.3.1。 我正在使用Connect和Socket.io。 我似乎在DNS或某些方面有一些随机的问题,我还不太清楚。 最终结果是服务器运行正常,但是当浏览器尝试连接到它时,初始HTTP请求工作,Socket.io连接,然后服务器死机(下面的输出)。

我认为它与HTTP请求没有任何关系,因为服务器将大量数据发布到服务器上,并且服务器正在接收请求并做出响应,直到我的连接将其杀死。 我到处搜索,发现最接近的是DNS设置不正确。 这是一个仅在内部网络上运行的网络程序,因此我已将/etc/resolv.conf中的gdb --args ./node_g --debug ../myscript.js设置为内部DNS。 我还添加了nameserver 8.8.8.8。 我不确定还需要检查什么,但会有所帮助。

gdb --args ./node_g --debug ../myscript.js

Exception: STATUS_ACCESS_VIOLATION at eip=610C51B9
eax=00000000 ebx=00000001 ecx=00000000 edx=00000308 esi=00000000 edi=010FCCB0
ebp=010FCAEC esp=010FCAC4 program=\\?\E:\cygwin\usr\local\bin\node.exe, pid 3296, thread unknown (0xBEC)
cs=0023 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame     Function  Args
010FCAEC  610C51B9  (00000000, 00000000, 00000000, 00000000)
010FCBFC  610C5B55  (00000000, 00000000, 00000000, 00000000)
010FCCBC  610C693A  (FFFFFFFF, FFFFFFFF, 750334F3, FFFFFFFE)
010FCD0C  61027CB2  (00000002, F4B994D5, 010FCE64, 00000002)
010FCD98  76306B59  (00000002, 010FCDD4, 763069A4, 00000002)
End of stack trace

节点输出:

    node.js:50
    throw e; // process.nextTick error, or 'error' event on first tick
    ^
Error: ENOBUFS, No buffer space available
    at doConnect (net.js:642:19)
    at net.js:803:9
    at dns.js:166:30
    at IOWatcher.callback (dns.js:48:15)

编辑

客户端连接以获取信息后,我立即使用gdb --args ./node_g --debug ../myscript.js访问了LDAP服务器,这似乎是导致ENOBUFS的问题所在。 我已经编辑了源代码,其中包括gdb --args ./node_g --debug ../myscript.js,现在可以防止服务器死亡,但是现在LDAP请求无法正常工作。 我不确定是什么问题会导致这种情况。 正如我提到的,这是内部唯一的应用程序,因此我将/etc/resolv.conf中的DNS服务器设置为要应用于主机的DNS服务器。 不确定这是否是问题的一部分?

编辑2

这是gdb --args ./node_g --debug ../myscript.js的一些输出。但是,我不确定这是否与ENOBUFS有关,因为它似乎在与Socket.io连接后立即断开连接。

    [New thread 672.0x100]
Error: dll starting at 0x76e30000 not found.
Error: dll starting at 0x76250000 not found.
Error: dll starting at 0x76e30000 not found.
Error: dll starting at 0x76f50000 not found.
[New thread 672.0xc90]
[New thread 672.0x448]
debugger listening on port 5858
[New thread 672.0xbf4]
14 Jan 18:48:57 - socket.io ready - accepting connections
[New thread 672.0xed4]
[New thread 672.0xd68]
[New thread 672.0x1244]
[New thread 672.0xf14]
14 Jan 18:49:02 - Initializing client with transport "websocket"
assertion "b[1] == 0" failed: file "../src/node.cc", line 933, function: ssize_t
 node::DecodeWrite(char*, size_t, v8::Handle<v8::Value>, node::encoding)

Program received signal SIGABRT, Aborted.
0x7724f861 in ntdll!RtlUpdateClonedSRWLock ()
   from /cygdrive/c/Windows/system32/ntdll.dll
(gdb) backtrace
#0  0x7724f861 in ntdll!RtlUpdateClonedSRWLock ()
   from /cygdrive/c/Windows/system32/ntdll.dll
#1  0x7724f861 in ntdll!RtlUpdateClonedSRWLock ()
   from /cygdrive/c/Windows/system32/ntdll.dll
#2  0x75030816 in WaitForSingleObjectEx ()
   from /cygdrive/c/Windows/syswow64/KernelBase.dll
#3  0x0000035c in ?? ()
#4  0x00000000 in ?? ()
(gdb)
trans by 2020-02-20T03:29:51Z

javascript-Passport-Facebook身份验证未为所有Facebook帐户提供电子邮件

我正在使用Passport-Facebook身份验证。

  passport.use(new FacebookStrategy({
            clientID: 'CLIENT_ID',
            clientSecret: 'CLIENT_SECRET',
            callbackURL: "http://www.example.com/auth/facebook/callback"
        },
        function (accessToken, refreshToken, profile, done) {            
            process.nextTick(function () {                
               console.log(profile)
            });               
        }
    ));

对于某些Facebook帐户,我没有得到email_id,我什至尝试使用如下所示的作用域变量,但仍然无法获得email_id。

profileUrl:“”和ProfileFields:[“,'']

trans by 2020-02-20T02:32:33Z

node.js-运行Mocha + Istanbul + Bab

在使用Mocha和babel编译器运行istanbul时遇到一些问题。

我所有的测试运行都很好,但是在完成所有测试后,它向我显示以下消息:

NODE_ENV=test istanbul cover _mocha -- --require babel-core/register --recursive

而且它没有产生任何覆盖率报告。

我正在运行的命令是:

NODE_ENV=test istanbul cover _mocha -- --require babel-core/register --recursive

该项目托管在github中:[https://github.com/weslleyaraujo/react-flux-puzzle/tree/feat/unit-tests-24]

有什么想法吗?

trans by 2020-02-19T17:21:00Z

javascript-如何使用NodeJS获取“ HTTP_REFERER”?

一种获取HTTP_REFERER的方法,我们可以在浏览器端javascript中使用document.referrer。但是如何在NodeJS中获得它呢?

trans by 2020-02-19T12:16:25Z

node.js可以在UNIX套接字上侦听吗?

node.js可以在UNIX套接字上侦听吗? 我找不到与此有关的任何文档。 我只看到了在专用端口上监听的可能性。

trans by 2020-02-19T05:57:16Z

node.js-如何在NodeJS中调试套接字挂起错误?

我收到以下错误:

events.js:48
        throw arguments[1]; // Unhandled 'error' event
        ^
Error: socket hang up
    at createHangUpError (http.js:1091:15)
    at Socket.onend (http.js:1154:27)
    at TCP.onread (net.js:363:26)

在节点v0.6.6中,我的代码具有多个http.request和.get调用。请提出方法来跟踪导致套接字挂起的原因以及请求/调用的原因。谢谢

trans by 2020-02-19T05:03:58Z

node.js-如何在Windows上以本地用户身份安装NodeJS LTS(无管理员权限)

我以简单用户的身份使用Windows(我没有任何管理员权限),并且想要安装NodeJS LTS。

在下载站点上,我可以选择仅下载二进制文件node.exe(不包括npm)或node.msi安装程序,该安装程序需要管理员权限才能执行。

如何手动安装node.exe并能够使用npm

trans by 2020-02-18T23:23:13Z

node.js-Expressjs原始主体

如何访问expressjs给我的请求对象的原始内容?

var express = require('./node_modules/express');
var app = express.createServer();
app.post('/', function(req, res)
{
    console.log(req.body); //says 'undefined'
});
app.listen(80);
trans by 2020-02-18T12:05:06Z

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