pnpm dev 启动 egg 时 ts 报错

sxissh06  于 2022-10-27  发布在  其他
关注(0)|答案(4)|浏览(387)

What happens?

pnpm dev 启动 egg 时 ts 报错

How To Reproduce

  1. mkdir egg-demo && cd egg-demo
  2. npm init egg --type=ts
  3. pnpm install
  4. pnpm dev

报错截图

axkjgtzd

axkjgtzd1#

感觉又是 pnpm 子依赖提升到平级导致插件的 typings 找不到。。。

@whxaxes 瞅瞅

uwopmtnx

uwopmtnx2#

本来是打算用 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

复现

  1. yarn set version berry
  2. yarn install
  3. cd server
  4. 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

tvz2xvvm

tvz2xvvm3#

@whxaxes 我用 pnpm 也遇到了这个问题,现在有进展吗

5vf7fwbs

5vf7fwbs4#

可能跟 eggjs/egg-core#238 有关,不过这个 PR 暂时回滚了,等我们修复完内部的几个 Bug 后,再继续发布。

相关问题