小编Ale*_*lls的帖子

流星流用户

使用node.js框架Meteor -

为什么currentUser变量是在模板中定义的,例如:

<template name="main_template">
  <div class="container">
  {{#if currentUser}}
  {{> add_player_form_template}}
  {{/if}}
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

但是当我currentUser从控制台调用时,它是未定义的:

在此输入图像描述

但是,Meteor.userId定义如下:

在此输入图像描述

为什么是这样?

javascript meteor

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

运行“git mv”与仅运行“mv”有什么区别

当涉及到源代码控制系统时,运行以下命令之间的实际结果差异是什么:

git mv <src> <dest>  // see: https://git-scm.com/docs/git-mv
Run Code Online (Sandbox Code Playgroud)

与“较低”级别的命令相比

mv <src> <dest>
Run Code Online (Sandbox Code Playgroud)

从版本/源代码控制系统的角度来看,结果有什么不同吗?或者任何/任何人的观点?

其他 git 命令(如git rm.I just want to know what difference it makes between running the git functions versus bash functions, or whatever.

git

11
推荐指数
3
解决办法
3025
查看次数

捕获SIGTERM与捕获SIGINT

在Node.js服务器中,捕获SIGTERM与捕获SIGINT之间有什么区别吗?

我认为进程不应该能够阻止SIGINT的关闭?

  process.once('SIGINT', function (code) {
    console.log('SIGINT received...');
    server.close();
  });

 // vs.

  process.once('SIGTERM', function (code) {
    console.log('SIGTERM received...');
    server.close();
  });
Run Code Online (Sandbox Code Playgroud)

我能够捕获两个信号并阻止退出吗?我的实验表明答案是肯定的,但从我读过的内容来看,SIGINT总是假设关闭一个进程.

或者我可能会把SIGINT与SIGKILL混淆?也许SIGKILL是我无法恢复的信号?

捕获这些信号当然可以让我优雅地关闭:

server.once('close', function(){
    // do some other stuff
    process.exit(2); // or whatever code pertains
});
Run Code Online (Sandbox Code Playgroud)

我想SIGINT与SIGKILL混淆了 -

如果我尝试这样做:

 process.once('SIGKILL', function (code) {
    console.log('SIGKILL received...');
    exitCode = code || 2;
    server.close();
  });
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

 internal/process.js:206
        throw errnoException(err, 'uv_signal_start');
        ^
    Error: uv_signal_start EINVAL
        at exports._errnoException (util.js:1022:11)
        at process.<anonymous> (internal/process.js:206:15)
        at emitTwo (events.js:106:13)
        at process.emit (events.js:191:7)
        at _addListener (events.js:226:14)
        at process.addListener (events.js:275:10) …
Run Code Online (Sandbox Code Playgroud)

sigint node.js sigterm

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

合并时仅忽略某些文件扩展名的空格

我有这个命令

git merge -Xignore-all-space origin/dev
Run Code Online (Sandbox Code Playgroud)

让我有点害怕b/c我害怕合并一个空白很重要的文件.有没有办法将其限制为某些文件,如下所示:

git merge -Xignore-all-space *.js origin/dev
Run Code Online (Sandbox Code Playgroud)

javascript git git-merge node.js

11
推荐指数
1
解决办法
218
查看次数

process.send在Node.js中有条件地定义

无论出于何种原因,在Node.js中,函数process.send在某些​​环境中定义,但在其他环境中未定义.例如,当我从Node.js中的父进程分叉子进程时,如下所示:

//parent process
var cp = require('child_process');
var k = cp.fork('./child.js',['arg1','arg2','arg3']);
k.send('fail'); //k.send is defined...
process.send("ok, let's try this..."); //process.send is NOT defined
Run Code Online (Sandbox Code Playgroud)

在子进程内:

//child.js
process.send('message');  //process.send is defined, and will send a message to the parent process above
Run Code Online (Sandbox Code Playgroud)

为什么process.send在某些Node.js进程中有条件地定义而不是其他进程?看起来像Node.js架构师的糟糕设计决策.

我知道如何解决这个问题的唯一方法是:

if(typeof process.send === 'function'){ 
process.send('what I want to send')
});
Run Code Online (Sandbox Code Playgroud)

node.js

10
推荐指数
1
解决办法
5713
查看次数

Node.js fs模块和windows路径

Node.js fs模块是否隐式将Windows文件夹路径分隔符转换'\\''/'

例如,如果我在Windows上使用此调用:

fs.readdirSync(dir).forEach(function(file) {

});
Run Code Online (Sandbox Code Playgroud)

file参数有'/'路径分隔符,不是'\\',为什么呢?

windows fs node.js

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

在Express中跳转到不同的路线链

我在Express中发现了一个非常有用的设备,可以在Express中跳转到一个新的中间件链

说我们有这个:

router.post('/', function(req,res,next){

   next();

}, function(req,res,next){

   next('route');  //calling this will jump us down to the next router.post call

}, function(req,res,next){ //not invoked

   next();  

}, function(err,req,res,next){

      //definitely not invoked
});



router.post('/', function(req,res,next){  //this gets invoked by the above next('route') call

   next();


}, function(err,req,res,next){

});
Run Code Online (Sandbox Code Playgroud)

我可以看到这可能有用,并试图弄清楚它是如何工作的.

我看到的问题是这个解决方案似乎只是让我们能够在路上行驶一下.我想要的是能够调用next('route:a')或next('route:b'),这样我就可以选择按名称调用哪个处理程序,而不仅仅是列表中的下一个处理程序.

举个例子,我有这个:

router.post('/', function (req, res, next) {  //this is invoked first
    console.log(1);
    next('route');
});

router.post('/', function (req, res, next) {  //this is invoked second
    console.log(2);
    next('route');
});

router.use('foo', function (req, res, next) {  //this …
Run Code Online (Sandbox Code Playgroud)

regex node.js express

10
推荐指数
2
解决办法
1548
查看次数

如何做Webpack构建模块的同步需求,来自*外部的Webpack构建

假设我有一个像这样的HTML文件:

<!DOCTYPE html>          
 <meta charset="UTF-8">
 <title>Suman tests</title>
 <head>
 <script src="../dist/suman.js"></script>   <-- webpack build here

    // how can I do a synchronous require() here, from something
    // inside the Webpack build?

 </script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

正如评论在脚本标签中所说,我试图弄明白:我如何从几乎任何旧的JavaScript代码中导入/需要Webpack构建内部的东西?

可能吗?怎么样?...我可以在构建中设置全局变量,但我想知道是否还有其他更好的方法.

注意:

我愿意使用Browserify而不是Webpack来创建bundle/build,如果这样可以更容易地从构建之外的构建中获取模块.

我尝试使用RequireJS和SystemJS这样做 - 这两个工具可以让我更容易做我想做的事情.但显然使用RequireJS或SystemJS从NPM包创建深层构建非常困难,在这种情况下,我需要一个包含许多NPM deps的深层构建.我甚至尝试使用TypeScript转换器来创建深度构建,但无济于事.所以看起来它必须是Browserify或Webpack,但我对可能有用的任何东西持开放态度.

请注意,如果我们使用AMD或SystemJS,这将是直截了当的:

<head>
  <script src="../dist/suman-amd.js"></script>   <--AMD build here
  <script src="../dist/suman-system.js"></script>   <--SystemJS build here
  <script>

       // using AMD

        define(['/a-module-from-amd-build'], function(myMod){

            // my unique code goes here

        });

        // or with SystemJS 

       System.register('my-module', ['a-module-from-system-build'], function(myMod){

             // my unique …
Run Code Online (Sandbox Code Playgroud)

html javascript webpack webpack-2

10
推荐指数
1
解决办法
649
查看次数

TS - 只能使用'new'关键字调用void函数

我从TypeScript得到这个奇怪的错误:

"只能使用'new'关键字调用void函数."

什么?

在此输入图像描述

构造函数,看起来像:

function Suman(obj: ISumanInputs): void {

  const projectRoot = _suman.projectRoot;

  // via options
  this.fileName = obj.fileName;
  this.slicedFileName = obj.fileName.slice(projectRoot.length);
  this.networkLog = obj.networkLog;
  this.outputPath = obj.outputPath;
  this.timestamp = obj.timestamp;
  this.sumanId = ++sumanId;

  // initialize
  this.allDescribeBlocks = [];
  this.describeOnlyIsTriggered = false;
  this.deps = null;
  this.numHooksSkipped = 0;
  this.numHooksStubbed = 0;
  this.numBlocksSkipped = 0;

}
Run Code Online (Sandbox Code Playgroud)

我不知道问题是什么.我尝试添加和删除返回类型(void),但没有做任何事情.

node.js typescript typescript2.0

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

二进制操作参数类型字符串与类型字符串不兼容

我的编辑(Webstorm)给了我这个奇怪的信息:

二进制操作参数类型字符串与类型字符串不兼容

以下是导致警告消息的代码:

const {masterid = '', type = ''} = req.query;

if (!masterid) {
    return res.status(500).send(new Error('Missing query param "masterid".'));
}

async.autoInject({

    patients(callback) {
        if(type && type !== 'staff'){
            return process.nextTick(callback);
        }
        store.get(`chat:presence:users:${masterid}`, callback)
    },

    users(callback) {
        if(type && type !== 'patient'){
            return process.nextTick(callback);
        }
        store.get(`chat:presence:patient:${masterid}`, callback);
    }

}, (err, results) => {

    if (err) {
        return res.status(err.code).send(err);
    }

    res.json(results);

});
Run Code Online (Sandbox Code Playgroud)

也许我使用错误的语法?

在此输入图像描述

我只是想设置变量的默认值..语法应该是正确的.

javascript node.js webstorm

10
推荐指数
1
解决办法
3365
查看次数