八进制转义序列在模板字符串中不被允许。

11

我正在使用 electron 和 vue 构建桌面应用程序,在开发模式下运行应用程序和构建应用程序时一切正常,直到最后一次运行 electron:build 时遇到了 八进制转义序列 错误。

我相当确定这与 strict mode 有关,但我试图找到八进制转义序列却没有机会,我还尝试删除一些上次成功构建后添加的无用依赖项,但也没有起作用。


PS: electron:serve 运行良好

错误截图

enter image description here

来自 Terser 的 background.js 模板字符串中不允许使用八进制转义序列 [background.js:1026,68555]

错误构建失败。 npm ERR!代码 ELIFECYCLE npm ERR!错误号码1 npm ERR!keyboard-managment@0.1.0 electron:build:vue-cli-service electron:build npm ERR!退出状态1 npm ERR! npm ERR!keyboard-managment@0.1.0 electron:build 脚本失败。 npm ERR!这可能不是npm的问题。 可能会在上面有其他日志输出。

6个回答

10
问题出在background.js文件中。在1026行和68555行,查找带有八进制序列的模板字符串。例如:
console.log(`Octal sequences like \033 are not allowed here`)

您可以将ES6模板还原为普通字符串:

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

或者您可以尝试使用不同的允许编码,例如:

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`

1
我在尝试更改TypeScript和strict模式下的终端输出时,来到了这里。以上回答都没有真正涵盖它。
原始的JavaScript模板字符串使用八进制转义\033
`${info.timestamp} [${info.level}] \033[35m${info.label}\033[39m: ${info.message}`

然而,在严格模式下,这些已被弃用。因此解决方案是将其转换为十六进制转义序列: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal

这意味着您必须进行八进制到十六进制的转换,并将\033转换为\x1B,如下所示:

`${info.timestamp} [${info.level}] \x1B[35m${info.label}\x1B[39m: ${info.message}`

这样,在终端窗口中,info.label 的输出将按预期进行颜色编码。


0
如果你在使用Windows系统,请将反斜杠改为正斜杠。

目前你的回答不够明确。请[编辑]添加更多细节,以便帮助其他人理解它如何回答问题。你可以在帮助中心找到更多撰写良好答案的信息。 - Community
1
这正是我需要的答案。我从一个Java应用程序中复制了一个日志输出,并希望使用JavaScript进行分析,但它的所有路径都是\path\to\file\,导致了八进制错误。这是一个简单而优雅的解决方案,帮我省了不少麻烦。 - undefined

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

-2
ES2016行为部分所指出的那样,八进制字符串在以\0开头时无法正常工作,但以\0o开头则可以:

以下代码是错误的:

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

但是这个确实

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接