Egg: TypeError: Cannot set property router of #<Object> which has only a getter

Created on 14 Feb 2019  ·  18Comments  ·  Source: eggjs/egg

What happens?


今天使用nom run autod 更新了项目的依赖后,所有的controller层的单元测试都不能通过了,连最基础的test/app/controller/home.test.js 也是。
然后新开了一个项, run test 也是一样的错误。
报错 TypeError: Cannot set property router of #<Object> which has only a getter

最小可复现仓库

请使用 egg-init --type=simple bug 创建,并上传到你的 GitHub 仓库

复现步骤,错误日志以及相关配置


$ npm i egg-init -g
$ egg-init egg-example --type=simple
$ cd egg-example
$ npm I
$ npm run test

image

相关环境信息

  • 操作系统:Mac
  • Node 版本:9.11.2
  • Egg 版本:2.15.1

Most helpful comment

Egg 的依赖,请坚持用 ^,我们保证会严格遵循 Semver 规则。

All 18 comments

已经回滚了,重新安装依赖重试一下。

请问是哪个包,哪个版本的问题?我也遇到了同样的问题
"egg": "2.0.0"
"egg-alinode": "^2.0.1"

alinoe: 4.4.2
node: 10.5.0

不要锁版本,删除整个依赖目录重装即可

好的,确实是锁版本了

Cannot set property router of # which has only a getter 删除依赖,没锁版本后还是出现这个,所有路由都是这样,请问是怎样解决?

@JackChius 把 yarn.lock 删掉,如果没有 yarn.lock,查一下你 package.json 里的 egg 依赖版本是不是写死了

@whxaxes 还原package.json 的"^"后问题得到解决,感谢大侠

Egg 的依赖,请坚持用 ^,我们保证会严格遵循 Semver 规则。

这个是啥问题,我这边也遇到了

以上操作全试了,均无效

提供最小可复现仓库

提供最小可复现仓库是指?

node version v10.16.3

egg version 2.9.0

rm -rf node_modules
npm i --no-package-lock

删掉package-lock.json或执行以上命令可以正常运行了

rm -rf node_modules
npm i --no-package-lock

删掉package-lock.json或执行以上命令可以正常运行了

解决了,先看package.json egg的依赖是否都是 ^ ,然后不要锁定依赖,重新安装即可
$ rm -rf node_modules yarn.lock package-lock.json
$ npm i --no-package-lock

Was this page helpful?
0 / 5 - 0 ratings