You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建时如何通过代码获取npm依赖包的版本?

解决Node.js获取依赖版本的路径问题

直接硬写node_modules/formik/package.json路径不可靠,因为Node的模块解析机制会根据环境查找依赖,硬编码路径容易出错。给你几个靠谱的解决方法:

方法一:简洁直接的模块路径引用

Node支持直接通过模块名引用其package.json,不用写node_modules路径,代码更简洁可靠:

const formikVersion = require('formik/package.json').version;
console.log(formikVersion); // 输出实际安装的精确版本,比如2.4.1

方法二:用require.resolve确保路径正确

如果需要更严谨的路径处理(比如复杂项目结构),可以借助require.resolve和path模块自动定位package.json:

const path = require('path');
// 让Node自动查找formik模块的入口文件路径
const formikEntryPath = require.resolve('formik');
// 从入口文件所在目录拼接出package.json的路径
const formikPackagePath = path.join(path.dirname(formikEntryPath), 'package.json');
const formikVersion = require(formikPackagePath).version;
console.log(formikVersion);

方法三:读取项目自身的package.json(仅适用于获取声明的版本范围)

如果你只需要项目package.json里声明的版本(比如^2.4.1这种带范围的写法),可以直接读取自己项目的package.json:

const projectPkg = require('./package.json');
const formikDeclaredVersion = projectPkg.dependencies.formik;
console.log(formikDeclaredVersion); // 输出^2.4.1

注意:你报错里提到找不到node_modules/simple-icons/package.json,大概率是代码里写错了依赖名,把formik写成simple-icons了,用上面的方法可以避免这类路径拼写错误。

内容的提问来源于stack exchange,提问作者Johnny Metz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:27:13