egg
egg copied to clipboard
pnpm dev 启动 egg 时 ts 报错
What happens?
pnpm dev 启动 egg 时 ts 报错
How To Reproduce
- mkdir egg-demo && cd egg-demo
- npm init egg --type=ts
- pnpm install
- pnpm dev
报错截图

感觉又是 pnpm 子依赖提升到平级导致插件的 typings 找不到。。。
@whxaxes 瞅瞅
本来是打算用 pnpm workspaces 做 monorepo 的,遇到以上问题; 接着想换成 yarn workspaces 依然遇到问题.. monorepo 目录结构如下(仅示意)
|-- server // eggjs
|-- packages // shared packages
|-- package.json
|-- yarnrc.yml
package.json
...
"workspaces": [
"packages/*",
"server"
],
...
yarnrc.yml
yarnPath: .yarn/releases/yarn-3.1.1.cjs
nodeLinker: "node-modules"
enableGlobalCache: true
复现
- yarn set version berry
- yarn install
- cd server
- yarn dev
报错
Error: egg is not found in /Users/xxx/CodeSpace/yyy/zzz-repo/server/node_modules
at assertAndReturn (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/egg-utils/lib/framework.js:66:9)
at Object.getFrameworkPath (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/egg-utils/lib/framework.js:49:10)
at DevCommand.formatArgs (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/egg-bin/lib/cmd/dev.js:91:28)
at formatArgs.next (<anonymous>)
at onFulfilled (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/co/index.js:65:19)
at /Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/co/index.js:54:5
at new Promise (<anonymous>)
at co (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/co/index.js:50:10)
at toPromise (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/co/index.js:118:63)
at next (/Users/xxx/CodeSpace/yyy/zzz-repo/node_modules/co/index.js:99:29)
其中报错的文件 egg-utils/lib/framework.js:66:9

建议
是否不要直接用existsSync 的方式查找模块,是否还有别的地方需要换成 require.resolve
@atian25
@whxaxes 我用 pnpm 也遇到了这个问题,现在有进展吗
可能跟 https://github.com/eggjs/egg-core/pull/238 有关,不过这个 PR 暂时回滚了,等我们修复完内部的几个 Bug 后,再继续发布。