一、问题描述
环境:
Node: 18.14.0
Nuxt: 3.0.0-rc.1
Yarn: 1.22.22
最近使用云效正常构建发布项目,但偶尔会出现项目无法访问,此时日志会出现以下异常:
ERROR Error [ERR_INVALID_PACKAGE_CONFIG]: Invalid package config /var/task/node_modules/ufo/package.json while importing "ufo" from /var/task/index.mjs. Unexpected token } in JSON at position 976
at new NodeError (internal/errors.js:322:7)
at getPackageConfig (internal/modules/esm/resolve.js:145:11)
at packageResolve (internal/modules/esm/resolve.js:719:27)
at moduleResolve (internal/modules/esm/resolve.js:773:18)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:887:11)
at Loader.resolve (internal/modules/esm/loader.js:89:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:76:40)
at link (internal/modules/esm/module_job.js:75:36) {
code: 'ERR_INVALID_PACKAGE_CONFIG'
最新更新
:
2024.07.02:今日再次出现该问题,所以本文所提解决方案无法解决该问题!!!
二、问题排查及解决
按照报错提示,下载构建产物,找到对应依赖ufo
的package.json进行检查:
确认该package.json中间少了部分内容,而该包在github上格式是完整无误的。
而本地多次测试,未出现该问题。因此,怀疑云效构建环境上可能存在问题。
于是在ufo github的issue上找到一篇《Cannot find package '/usr/src/app/.output/server/node_modules/ufo》,里面也有提到Invalid package config node_modules/ufo/package.json while importing "ufo"
的问题,而且可能和Docker环境有关。
另外提到ufo相关的,还有在Stack Overflow上的一个问题:《nuxt cannot find module nuxt ufo from app cilent no changes were made》,里面也提到了Docker引发的问题。
最后,云效 Flow 提供的默认构建集群应该使用的容器是 Docker,那么有可能也会存在该问题。可以采用下面的方式来尝试解决问题(目前待验证):
删除/node_modules文件夹,然后重新安装模块:
yarn install @nuxt/ufo
或(旧的@nuxt/ufo包):
yarn install ufo@0.8.4