模板字符串中不允许使用八进制转义序列

Posted

技术标签:

【中文标题】模板字符串中不允许使用八进制转义序列【英文标题】:Octal escape sequences are not allowed in template strings 【发布时间】:2019-09-26 02:50:00 【问题描述】:

我正在使用 electron 和 vue 构建一个桌面应用程序,在开发模式下运行该应用程序并通过运行 electron:build 构建它直到最后一个构建它是正常的,但我一直收到这个错误八进制转义序列

我很确定它必须处理strict mode,但我试图找到八进制转义但没有机会,我试图删除我在最后一次成功构建后添加的一些无用依赖项也没有工作


PS:electron:serve 工作正常

图片错误

来自 Terser 的 background.js [背景.js:1026,68555]

ERROR 构建失败并出现错误。 npm 错误!代码生命周期 npm 错误!错误号 1 npm 错误!键盘管理@0.1.0 电子:构建:vue-cli-service electron:build npm 错误!退出状态 1 npm 错误! npm 错误!在keyboard-managment@0.1.0 electron:build 脚本中失败。 npm 错误!这可能不是 npm 的问题。上面可能还有额外的日志输出。

【问题讨论】:

【参考方案1】:

问题出在 background.js 中。在第 1026 和 68555 行中,查找其中包含八进制序列的模板字符串。示例:

console.log(`Octal sequences like \033 are not allowed here`)

您可以将 es6 模板恢复为(常规)字符串:

console.log("Octal sequences like \033 are allowed here")

或者你可以试试different, permitted encoding,例如,

console.log(`Sequences like \2264 are not allowed here`);
console.log(`But sequences like \u2264 are allowed`);

【讨论】:

【参考方案2】:

对不起,这是一个相当晚的响应,但实际上有一种方法可以在模板字符串中使用八进制转义序列。您使用其中的普通字符串添加八进制序列。例如:

let myString = `foo $"\033" bar`

这类似于将字符串添加在一起:

let myString = `foo ` + "\003" + ` bar`

【讨论】:

【参考方案3】:

正如the section on ES2016 behavior 中所指出的,八进制字符串在由\0o 而不是\0 启动时可以正常工作:

行不通

console.log(`\033]0;Some title\007`);

但这确实

console.log(`\0o33]0;Some title\0o07`);

并具有设置终端标题的预期效果。

【讨论】:

以上是关于模板字符串中不允许使用八进制转义序列的主要内容,如果未能解决你的问题,请参考以下文章

C++特殊字符转义序列

a(警报和哔声)转义序列字符在 C 语言中不起作用

ES9(2018)String 扩展 标签模板里字符串转义

转义字符_MySQL识别下面的转义序列

为啥转义序列“\a”在 Windows 窗体应用程序中不产生声音?

字面值常量&&转义序列