如何避免"严格模式下不允许使用八进制文字"使用createWriteStream

时间:2014-05-12 12:26:59

标签: node.js lint

我有以下代码

 fs.createWriteStream( fileName, {
        flags    : 'a',
        encoding : 'utf8',
        mode     : 0644
    });

我得到一个lint错误

Octal literals are not allowed in strict mode.

执行此代码的正确方法是什么,所以我不会得到lint错误?

6 个答案:

答案 0 :(得分:51)

你可以这样写:

 mode     : parseInt('0644',8)

在节点和现代浏览器中(参见compatibility),您可以使用八进制文字:

 mode     : 0o644

答案 1 :(得分:43)

我在scape序列中使用它时遇到了这个问题:

console.log('\033c'); // Clear screen

我所要做的就是将其转换为Hex

console.log('\x1Bc'); // Clear screen

答案 2 :(得分:25)

我手头没有节点安装,但是看sources它们似乎也允许使用字符串:

  mode     : '0644'

有效吗?

答案 3 :(得分:0)

您可以使用 0o 前缀代替八进制数。

let x = 0o50;
console.log(x); //40

答案 4 :(得分:0)

我也遇到了这个问题

function getFirst(arr) {
    return arr[0]
}
let first = getFirst([10, 'hello', 96, 02])
console.log(first)

这就是我为修复它所做的

function getFirst(arr) {
    return arr[0]
}
let first = getFirst([10, 'hello', 96, '02'])
console.log(first);

显然它不接受 0 作为数字的开头,除非它是一个字符串

答案 5 :(得分:-1)

您可以通过将模式用于字符串类型来避免此问题。

第一种方法

 let mode = "0766";
 fs.createWriteStream( fileName, {
        flags    : 'a',
        encoding : 'utf8',
        mode     : mode
    });

第二种方法

 fs.createWriteStream( fileName, {
        flags    : 'a',
        encoding : 'utf8',
        mode     : "0766"
    });