Travis/Jest: 类型错误:无法将只读属性'Symbol(Symbol.toStringTag)'分配给对象“#<process>”

47

我所有的 jest typescript 测试都在我的 travis 流水线中失败,抛出以下错误:

TypeError: Cannot assign to read only property 'Symbol(Symbol.toStringTag)' of object '#<process>'

我没有特别更改代码,但这突然发生了。在本地一切正常。

有任何想法是怎么回事吗?


3
我刚刚在所有的构建中突然遇到了完全相同的错误。 - JSeven
6个回答

58

这是一个随node v11.11一起出现的错误。您可以将其降级到v11.10或等待Facebook已经推出的修复方案(jest error in Node version over 11.11)。

如果您遇到的问题与TravisCI有关,则可以设置一个可用的固定版本:

node_js:
  - "11.10.1"

我也遇到了这个问题。谢谢,它对我有用。 - Vincent Llauderes

20

您也可以将您的 jest 版本升级到 24.3.0,此版本已经修复了这个问题。相信这比降低您的 node 版本更有未来性。


我升级到jest 24.3.1,但它没有工作。 将node版本更改为11.10.1后,它又开始工作了。 - Nabuska

4

我只需要将node升级到v11.12.0,就成功解决了这个问题。


2
如果以上两个答案都无法解决您的问题,请尝试将jest升级到^24.3.0,并降低客户端容器中docker镜像的node版本。我使用了FROM node:11.10-alpine,而没有降低TravisCI使用的node版本。"最初的回答"的意思是原始答案或初始答案。

1
如果您使用 nvm(Node 版本管理器),
nvm install v11

nvm use v11

1
这个问题主要有两种解决方案:
  • 将jest版本升级至24.3.0(但对我无效)
  • 将node版本降级至11.10.1
我知道降低node版本并不是一个好的解决方案,但对于那些想要运行测试的人来说,可以尝试这样做。通过将其节点版本从11.11.1降级到11.10.1, 安装"n"包。此 n 包可帮助您交互式地管理Node.js版本。
npm install -g  n

安装完成后,只需运行以下命令:

sudo n 11.10.1

当您更改节点版本时,您可以运行以下命令来检查节点版本:

node --version

并且稍后可以在那里运行测试

npm test

它对我起作用了,希望对你有所帮助 :)


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