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-使用Hapi时如何将路由存储在单独的文件中?

所有的Hapi示例(以及Express中的类似示例)都显示了在起始文件中定义了路由:

var Hapi = require('hapi');

var server = new Hapi.Server();
server.connection({ port: 8000 });

server.route({
  method: 'GET',
  path: '/',
  handler: function (request, reply) {
    reply('Hello, world!');
  }
});

server.route({
  method: 'GET',
  path: '/{name}',
  handler: function (request, reply) {
    reply('Hello, ' + encodeURIComponent(request.params.name) + '!');
  }
});

server.start(function () {
  console.log('Server running at:', server.info.uri);
});

但是,不难想象当使用大量不同的路线实现生产应用程序时,此文件可以增长到多大。 因此,我想分解路由,将它们分组并存储在单独的文件中,例如UserRoutes.js,CartRoutes.js,然后将它们附加到主文件中(添加到服务器对象)。 您如何建议将其分开然后添加?

trans by 2020-06-17T13:54:59Z

npm-输出已安装的node.js库的所有许可证

npm(或其他工具)中是否可以打印所有使用过的许可证?我有一个项目,我想确保我不会使用未经许可的库。

编辑:发现许多开发人员不在package.json中包含许可证,所以我不得不使用“ npm docs package-name”手动找出

trans by 2020-06-17T05:06:28Z

javascript-Node.js支持=>(箭头功能)

Node.js是否已经支持=>函数关键字别名? 如果是,请从哪个版本开始? 如何启用此语言扩展?

(function() { console.log('it works!') })()

成为

(() => { console.log('it works!') })()
trans by 2020-06-17T02:09:40Z

node.js-Mocha beforeEach与执行之前

我最近遇到了一个我无法解释的问题。 我在这些测试中有很多代码,所以我将尽力在这里捕获想法

我有类似的测试:

describe('main page', function(){
  beforeEach(function(done){
    addUserToMongoDb(done);   // #1
  });

  afterEach(function(done){
    removeUserFromMongoDb(done);
  });

  context('login', function(){
     it('should log the user in, function(){
       logUserIn(user_email);  // #2 - This line requires the user from the beforeEach
     });
  });

  context('preferences', function(){
    before(function(done){    //#3
       logUserInBeforeTest(user_email);
     });

    it('should show the preferences', function(){
       doCheckPreferences(); // #4
    });
  });
});

问题是,beforeEach by before运行良好。 我可以看到它在数据库上发生,并且在beforeEach中的测试通过了。

但是,在偏好设置上下文中的测试在before失败,因为它找不到用户在beforeEach进行登录。

似乎上下文before在描述beforeEach之前执行,这导致它们失败。 如果我将logUserIn移到it块中,则可以正常工作。

是什么原因造成的?

trans by 2020-06-16T20:51:36Z

javascript-如何阻止babel从“ this”转换为“ undefined”(并插入“ use strict”)

编辑:这不是关于胖箭头。 这也与将其传递给IIFE无关。 这是与翻译员有关的问题。

因此,我为正在使用的小应用程序创建了一个简单的pub-sub。 我在ES6中编写了它,以使用传播/休息并节省一些麻烦。 我用npm和gulp对其进行了设置以进行翻译,但它使我发疯。

我做了一个浏览器库,但意识到它可以在任何地方使用,因此我决定使其与Commonjs和AMD兼容。

这是我的代码的精简版:

(function(root, factory) {
 if(typeof define === 'function' && define.amd) {
    define([], function() {
        return (root.simplePubSub = factory())
    });
  } else if(typeof module === 'object' && module.exports) {
    module.exports = (root.simplePubSub = factory())
  } else {
    root.simplePubSub = root.SPS = factory()
  }
}(this, function() {
 // return SimplePubSub
});

但是无论我尝试什么(例如将其设置为变量并将其传递),它都会将其设置为undefined。

}(undefined, function() {

这可能与Babel有所关联,Babel不知道这将是什么并将其转译出来,但是我还能采取其他方法吗?

更新:代替此方法传递}((window || module || {}), function() {似乎可行。 我不确定这是否是最好的方法。

trans by 2020-06-16T19:59:21Z

node.js-一个查询中的node-mysql多条语句

我正在使用nodejs 10.26 + express 3.5 + node-mysql 2.1.1 +MySQL-Server Version: 5.6.16

我有4个DELETE,只需要1个数据库请求,因此我将DELETE命令连接为“;” ...,但是它总是失败。

var sql_string = "DELETE FROM user_tables WHERE name = 'Testbase';";
sql_string += "DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase';";
sql_string += "DELETE FROM user_tables_rules WHERE parent_table_name = 'Testbase';";
sql_string += "DELETE FROM user_tables_columns WHERE parent_table_name = 'Testbase';";

connection.query(sql_string, function(err, rows, fields) {
   if (err) throw err;
   res.send('true');
});

它引发此错误:

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase';DELETE FR' at line 1

但是,如果我将此SQL粘贴到PhpMyAdmin中,它将始终成功...

如果我在单个查询中写它也是成功的。

        connection.query("DELETE FROM user_tables WHERE name = 'Testbase'", function(err, rows, fields) {
        if (err) throw err;

        connection.query("DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
            if (err) throw err;


            connection.query("DELETE FROM user_tables_rules WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
                if (err) throw err;

                connection.query("DELETE FROM user_tables_columns WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
                    if (err) throw err;

                    res.send('true');
                });
            });
        });
    });

感谢帮助!

trans by 2020-06-16T18:32:54Z

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

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