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

guy*_*abi 40 lint node.js

我有以下代码

 fs.createWriteStream( fileName, {
        flags    : 'a',
        encoding : 'utf8',
        mode     : 0644
    });
Run Code Online (Sandbox Code Playgroud)

我得到一个lint错误

Octal literals are not allowed in strict mode.
Run Code Online (Sandbox Code Playgroud)

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

Den*_*ret 53

你可以这样写:

 mode     : parseInt('0644',8)
Run Code Online (Sandbox Code Playgroud)

在节点和现代浏览器中(请参阅兼容性),您可以使用八进制文字:

 mode     : 0o644
Run Code Online (Sandbox Code Playgroud)


ari*_*iel 48

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

console.log('\033c'); // Clear screen
Run Code Online (Sandbox Code Playgroud)

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

console.log('\x1Bc'); // Clear screen
Run Code Online (Sandbox Code Playgroud)

  • 正是我的问题!这个解决方案运行良好,谢谢! (7认同)
  • @538ROMEO 八进制 33 = 十进制 27 = 十六进制 1B (2认同)

geo*_*org 28

我手边没有节点安装,但看看源代码似乎也允许字符串:

  mode     : '0644'
Run Code Online (Sandbox Code Playgroud)

它有用吗?