【问题标题】: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 的问题。上面可能还有额外的日志输出。
【问题讨论】:
标签:
node.js
npm
electron
electron-builder
vue-cli-3
【解决方案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`);
并具有设置终端标题的预期效果。