Error: Package subpath './lib/request' is not defined by "exports" in /Users/artoria/wusong/microservice-server/node_modules/koa/package.json
复现步骤,错误日志以及相关配置node 从 16 升级到 17,执行 egg-bin dev
- 操作系统:macOS 12
- Node 版本:v17.1.0
- Egg 版本: v2.32.0
Error: Package subpath './lib/request' is not defined by "exports" in /Users/artoria/wusong/microservice-server/node_modules/koa/package.json
复现步骤,错误日志以及相关配置node 从 16 升级到 17,执行 egg-bin dev
删除 node_modules 后重新安装下依赖就行了
删除
node_modules后重新安装下依赖就行了
@hyj1991 为什么需要这样操作?我升级了 egg 依赖之后执行了 npm ci,也是报错
node 16 新出的那个 package.json 里面的 export 配置校验问题吧。
导致 egg-core 里面的这个 require 挂了:https://github.com/eggjs/egg-core/blob/77e11f5fb38b3646fb20deb78bbc239b06bf8349/lib/loader/mixin/extend.js#L8
cc @dead-horse
重新安装了依赖,出现了另一个问题
Error: ENOENT: no such file or directory, scandir '/node_modules/egg-session/app/schedule'
related: #4798
node 16 新出的那个 package.json 里面的 export 配置校验问题吧。
导致 egg-core 里面的这个 require 挂了:https://github.com/eggjs/egg-core/blob/77e11f5fb38b3646fb20deb78bbc239b06bf8349/lib/loader/mixin/extend.js#L8
cc @dead-horse
@atian25 嗯,但是我也把 egg 从 2.30.0 升级到了 2.32.0,如果 egg-core 已经修复了会连带更新的吧
p.s. npm v8.1.2
这不是 Egg 的问题,而是 Node 的 break change,需要 Koa 那边更新。
不过看了下, Koa 的 2.13.4 里面已经有对应的 define 的了,也试了 Node 16 是没问题的,你试试 16 有没有问题。
Node 的单数版本不是 LTS,是非稳定版本,不要使用。
@hyj1991 为什么需要这样操作?我升级了 egg 依赖之后执行了 npm ci,也是报错
可以看下这个 https://github.com/koajs/koa/pull/1588
Koa 修复了 DEP0148,这个 dep 在 v17 之前 runtime 只是输出一个 warning 信息,v17 开始直接 runtime 直接 abort 了,所以你要重新安装下依赖升级下 koa 的版本
@hyj1991 为什么需要这样操作?我升级了 egg 依赖之后执行了 npm ci,也是报错
可以看下这个 koajs/koa#1588
Koa 修复了 DEP0148,这个 dep 在 v17 之前 runtime 只是输出一个 warning 信息,v17 开始直接 runtime 直接 abort 了,所以你要重新安装下依赖升级下 koa 的版本
这不是 Egg 的问题,而是 Node 的 break change,需要 Koa 那边更新。
不过看了下, Koa 的 2.13.4 里面已经有对应的 define 的了,也试了 Node 16 是没问题的,你试试 16 有没有问题。
Node 的单数版本不是 LTS,是非稳定版本,不要使用。
明白了,谢谢
和天猪说的一样,奇数版本不推荐使用,解决了这个 koa 导致的 abort,也会因为 https://github.com/eggjs/egg/issues/4798#issuecomment-970149671 提到的 runtime 自身大版本升级的 break 引发的流编程先后顺序逻辑错误导致 egg 启动失败
奇数版本因为有很多实验性的特性,下游依赖不一定会去修复兼容,先使用最新的 LTS 版本 v16.x
koa已经修复这个问题了,https://github.com/koajs/koa/pull/1590/files
需要更新egg依赖的koa版本, 目前在v16中是DeprecationWarning
egg 引入 koa 是 semver 的,重新安装依赖即可,自动更新到最新。
在 m1 的 Macos 12 下,使用 node 17.2 有同样的问题, 已经是最新版本了
永远永远不要用单数版本的 Node
降级到 node 16.13,解决了问题