Nuxt项目中unstorage驱动[ERR_PACKAGE_PATH_NOT_EXPORTED]错误求助
我们团队通过npx create-nuxt-app OUR_PROJECT创建Nuxt模板项目,其他成员运行均正常,但一位使用全新MacBook Air的成员遇到如下错误:
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath ‘./drivers/fs’ is not defined by “exports” in /Users/ONE_USER/OUR_PROJECT/node_modules/unstorage/package.json imported from /Users/ONE_USER/OUR_PROJECT/node_modules/@nuxt/content/dist/module.mjs
已尝试重新克隆项目、安装Xcode命令行工具,问题仍未解决。所有成员的node_modules/unstorage/package.json中exports配置一致:
...,"exports": { "./drivers/*": { "import": "./dist/drivers/*.mjs", "require": "./dist/drivers/*.cjs", "types": "./dist/drivers/*.d.ts" }, ".": { "import": "./dist/index.mjs", "require": "./dist/index.cjs" }, "./server": { "import": "./dist/server.mjs", "require": "./dist/server.cjs", "types": "./dist/server.d.ts" } },...
该成员的NPM调试日志如下:
0 info it worked if it ends with ok 1 verbose cli [ ‘/usr/local/bin/node’, ‘/usr/local/bin/npm’, ‘run’, ‘dev’ ] 2 info using npm@6.14.5 3 info using node@v14.3.0 4 verbose run-script [ ‘predev’, ‘dev’, ‘postdev’ ] 5 info lifecycle OUR_PROJECT@1.0.0~predev: OUR_PROJECT@1.0.0 6 info lifecycle OUR_PROJECT@1.0.0~dev: OUR_PROJECT@1.0.0 7 verbose lifecycle OUR_PROJECT@1.0.0~dev: unsafe-perm in lifecycle true 8 verbose lifecycle OUR_PROJECT@1.0.0~dev: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/ONE_USER/OUR_PROJECT/node_modules/.bin:/Users/ONE_USER/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin 9 verbose lifecycle OUR_PROJECT@1.0.0~dev: CWD: /Users/ONE_USER/OUR_PROJECT 10 silly lifecycle OUR_PROJECT@1.0.0~dev: Args: [ ‘-c’, ‘nuxt’ ] 11 silly lifecycle OUR_PROJECT@1.0.0~dev: Returned: code: 1 signal: null 12 info lifecycle OUR_PROJECT@1.0.0~dev: Failed to exec dev script 13 verbose stack Error: OUR_PROJECT@1.0.0 dev: `nuxt` 13 verbose stack Exit status 1 13 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16) 13 verbose stack at EventEmitter.emit (events.js:315:20) 13 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14) 13 verbose stack at ChildProcess.emit (events.js:315:20) 13 verbose stack at maybeClose (internal/child_process.js:1051:16) 13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) 14 verbose pkgid OUR_PROJECT@1.0.0 15 verbose cwd /Users/ONE_USER/f22-backup 16 verbose Darwin 21.6.0 17 verbose argv “/usr/local/bin/node” “/usr/local/bin/npm” “run” “dev” 18 verbose node v14.3.0 19 verbose npm v6.14.5 20 error code ELIFECYCLE 21 error errno 1 22 error OUR_PROJECT@1.0.0 dev: `nuxt` 22 error Exit status 1 23 error Failed at the OUR_PROJECT@1.0.0 dev script. 23 error This is probably not a problem with npm. There is likely additional logging output above. 24 verbose exit [ 1, true ]
原因分析
从日志可见,该成员使用的Node.js版本为v14.3.0,而unstorage中./drivers/*这类通配符导出语法,需要Node.js v14.13.0及以上版本才支持。旧版本Node无法识别该通配符规则,因此报错提示./drivers/fs未在exports中定义。
解决方法
升级Node.js版本
将Node.js升级至v14.13.0或更高版本(推荐使用LTS稳定版,如v16.x或v18.x)。可以通过版本管理工具nvm操作:# 安装LTS版本 nvm install --lts # 切换到LTS版本 nvm use --lts若未安装nvm,可通过官方渠道下载安装包手动升级。
重新安装依赖
升级Node后,删除项目目录下的node_modules文件夹和package-lock.json文件,再执行:npm install
内容的提问来源于stack exchange,提问作者SumNeuron

