小编sim*_*imo的帖子

Nodejs文件权限

在Node中,该fs.stat方法返回一个fs.Stats对象,我可以通过该fs.Stats.mode属性获取文件权限.

以下是来自节点和shell的相同目录的实际输出:

node  shell
17407 d rwx rwx rwt
16877 d rwx r-x r-x
16749 d r-x r-x r-x
16832 d rwx --- ---
Run Code Online (Sandbox Code Playgroud)

我需要知道如何解析fs.Stats.mode数字以获得权限.

回答

数字是八进制数字系统,转换为十进制后如下所示:

17407 41777 d rwx rwx rwt
16877 40755 d rwx r-x r-x
16749 40555 d r-x r-x r-x
16832 40777 d rwx --- ---
Run Code Online (Sandbox Code Playgroud)

从八进制到十进制的转换是这样的:

parseInt(stat.mode.toString(8), 10)
Run Code Online (Sandbox Code Playgroud)

关于linux中文件权限的精彩教程 - https://www.linux.com/learn/understanding-linux-file-permissions

file-permissions file node.js

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

写入生成的进程stdin nodejs?

我有一个脚本,我想从另一个脚本运行.问题是子脚本(进程)在继续之前需要用户输入.

var child = spawn('script');
child.stdin.setEncoding('utf8');
child.stdout.on('data', function (data) {
    console.log(data.toString().trim()); // tells me to input my data
    child.stdin.write('my data\n');
});
Run Code Online (Sandbox Code Playgroud)

输入数据后,子脚本应继续,但它会挂在那里.

实际上上面的代码对我有用.我在子脚本中使用commander.js来提示用户执行操作.以下是我如何回应孩子的脚本提示:

child.stdout.on('data', function (data) {
    switch (data.toString().trim()) {
        case 'Username:':
            child.stdin.write('user');
            break;
        case 'Password:':
            child.stdin.write('pass');
            break;
    }
});
Run Code Online (Sandbox Code Playgroud)

同样的事情与假设一起工作:

var suppose = require('suppose');

suppose('script')
    .on('Username: ').respond('user')
    .on('Password: ').respond('pass')
.error(function (err) {
    console.log(err.message);
})
.end(function (code) {
    console.log(code);
    done();
});
Run Code Online (Sandbox Code Playgroud)

stdin stream child-process node.js

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

Javascript Date.toJSON没有得到时区偏移量

那么问题是我使用的代码是这样的:

new Date().toJSON().slice(0, 10)
Run Code Online (Sandbox Code Playgroud)

把我的日期作为YYYY-MM-DD字符串,然后我在一些mysql查询和一些条件语句中使用它像参数.在一天结束时,我没有得到正确的日期,因为它仍然在前一天(我的时区偏移是+2/3小时).

我没有注意到这个toJSON方法没有考虑你的时区偏移,所以我最终得到了这个hacky解决方案:

var today = new Date();
today.setHours( today.getHours()+(today.getTimezoneOffset()/-60) );
console.log(today.toJSON().slice(0, 10));
Run Code Online (Sandbox Code Playgroud)

有更优雅的解决方案吗?

javascript timezone date

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