dvajs / dva-cli

The dva command line utility.
964 stars 156 forks source link

root.findRouters(...).getRouterInfo is not a function #91

Closed gongchao closed 7 years ago

gongchao commented 7 years ago
$ dva g route product-list
/Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/bin/dva-generate
      create  routeComponent src/routes/ProductList.js, src/routes/ProductList.css
TypeError: root.findRouters(...).getRouterInfo is not a function
    at transform (/Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/node_modules/dva-ast/lib/transform.js:42:32)
    at exports.default (/Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/node_modules/dva-ast/lib/api/index.js:46:36)
    at /Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/lib/generate.js:92:27
    at generate (/Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/lib/generate.js:108:11)
    at Object.<anonymous> (/Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/bin/dva-generate:11:27)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
github-sunpiaoliang commented 7 years ago

我也是这个疑难杂症!

jzoe commented 7 years ago

+1

serical commented 7 years ago

+1, 有没有哥们解决的,分享下呀

heianqishizhisuiyuan commented 7 years ago

我也是这个错误 求解决

wupinlang commented 7 years ago

+1 求解决

zjcwill commented 7 years ago

+1

GreenAppleOne commented 7 years ago

我也这个问题,怎么折腾都不行

miaozilong commented 7 years ago

我回退版本到0.7.0和0.7.6 也报错 但是错误还不一样 晕死。。。

qiutiaoming commented 7 years ago

+1

vale1534 commented 7 years ago

这个 bug 让我怀疑自己人生。问题的根源是,我们安装的 dva-cli > dva-ast > jscodeshift 的版本不对!

dva-ast 中使用了下面的代码:

Collection.fromPaths([], this);

Collectionjscodeshift 库提供的,dva-astpackage.json 指定 "jscodeshift": "^0.3.28" ,但 jscodeshift 最新版本是 0.3.32 ,这里 Bug 就出现了。

虽然我发现了问题根源,但 dva-astjscodeshift 这两个库的源代码看得我云里雾里,望而生畏,杀虫的工作还是等高手吧。

我目前的解决方法是,将全局安装的 jscodeshift 回滚至 0.3.28 ,初入江湖的我,人生还可以继续么?

Roll your global package jscodeshift back to v0.3.28 .

vale1534 commented 7 years ago

已经在 dva-ast 打了臭虫报告,应该很快可以修复的。

https://github.com/dvajs/dva-ast/issues/39

我已经找出 Bug 了,原因是 dva-ast 引用了 jscodeshiftCollection ,在 jscodeshift 新版本中这个 Collection 的位置发生了变化,从 'jscodeshift/dist/Collection'; 变为了 'jscodeshift/src/Collection';

如果不想回滚 jscodeshift ,可以直接修改 dva-ast 的文件,将下面文件中的 'jscodeshift/dist/Collection'; 改为 'jscodeshift/src/Collection'; 即可:

  1. dva-ast/lib/collections/Entry.js
  2. dva-ast/lib/collections/RouteComponent.js
  3. dva-ast/lib/collections/Router.js
heianqishizhisuiyuan commented 7 years ago

不对呀 你在哪修改jscodeshift呀 怎么找到的呀

vale1534 commented 7 years ago

@heianqishizhisuiyuan

在全局包目录中,当安装 dva-cli 时依赖而来的。不同方式,如 npmyarnnvm 安装的目录的都不一样,你可以从报错中推出的,如:

$ dva g route product-list
/Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/dva-cli/bin/dva-generate
      create  routeComponent src/routes/ProductList.js, src/routes/ProductList.css
...

jscodeshift 应该在 /Users/gongchao/.nvm/versions/node/v7.4.0/lib/node_modules/jscodeshift 目录下。

heianqishizhisuiyuan commented 7 years ago

@gongchao 谢谢大神 找到了 而且 确实把jscodeshift 改成0.3.28 版本后能用了 哈哈

yolo-ling commented 7 years ago

root.findRouters(...).getRouterInfo is not a function 把jscodeshift 改成0.3.28 版本这个问题解决了,但是又出现一个报错 2; 大神们求解!

vale1534 commented 7 years ago

很明显的错误是由于文件已存在,删除 src/routes/Users.jssrc/routes/Users.css 再试。

3lang3 commented 7 years ago

@wenris bug反馈这么多天了 还没修复啊

liujun9562 commented 7 years ago

@lingfulu 请问你那个问题解决了吗?跟你报一样的错

#

Raoul1996 commented 7 years ago

@wenris 谢谢,更改文件之后已经可以使用了

GreenAppleOne commented 7 years ago

真是奇怪了 ,bug为啥不修复 ,快速出个版本不就行了吗?感觉整个dva 所有项目都是拖拖拉拉的,roadhog也是这个样子,是不是没有精力搞了呢

chenkan commented 7 years ago

代码已经修复了, 但是 npm 包还没有更新吧@sorrycc @ChrisFan see: https://github.com/dvajs/dva-ast/pull/41/files

sorrycc commented 7 years ago

dva-cli@0.7.9,已修复。

hudarui commented 7 years ago

辛苦了,大神