我有一个使用lookbehind的正则表达式:
(?<!\S)\'\S(.*?)\S\'(?!\S)
这是一个 ES2018功能。
我也在使用 Typescript,所以我使用 ts-node 运行我的代码.
运行代码时,出现此错误:
SyntaxError: Invalid regular expression: /(?<!\S)\'\S(.*?)\S\'(?!\S)/:
Invalid group
但是,这样做可以成功运行代码:
node --harmony script.js
我尝试将其添加到我的 tsconfig.json
中:
{
"compilerOptions": {
"target": "es6",
"lib": [
"ES2018" // I also tried es2018. No luck.
],
"module": "commonjs",
"outDir": "out",
"sourceMap": true
}
}
但我遇到了同样的错误。
有什么建议吗?
注意:我通过 nvm
将 node
更新到版本 13。执行 node script.js
有效,但执行 ts-node script.ts
无效。我已经拥有最新版本的 ts-node
,所以我不知道该怎么做。
最佳答案
Lookbehind 首次在 Node 版本 8 中引入,但由于(当时)它是一个实验性功能,因此需要 --harmony
标志(它启用实验性功能,例如新语法,但目前还没有被认为是 100% 可靠和稳定)。让 ts-node 使用 harmony
标志运行 Node 有点难看 - 您必须运行 native Node 并让它预加载 ts-node,如下所示:
node --harmony -r ts-node/register index.ts
(确保 ts-node 为 installed locally )
Lookbehind 毕业于 Harmony in node 10 ,因此,如果您将 Node 更新到版本 10,您将能够在没有 Harmony 标志的情况下运行 Lookbehind。(看起来版本 9.11.2 也支持它)
关于node.js - 如何使 Typescript/ts-node 接受后向断言(ECMAScript 2018 功能)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014768/