React Native链接自定义字体报Unrecognized command "link"错误
报错原因
执行npx react-native link提示Unrecognized command "link",是因为React Native 0.69及后续版本已经正式移除了内置的link命令,这个旧版用于自动链接原生模块、静态资源的命令已经不再内置在新版CLI中。
解决方法
方案1:使用新版资源链接工具(推荐,适配所有0.60+版本)
新版RN的自定义字体等静态资源链接,不需要依赖旧的link命令,按以下步骤操作即可:
- 在项目根目录新建
assets/fonts文件夹,将所有需要引入的.ttf、.otf格式字体文件放入该目录 - 在项目根目录新建(或修改已有的)
react-native.config.js文件,添加资源路径配置:
module.exports = { project: { ios: {}, android: {}, }, assets: ['./assets/fonts/'], };
- 安装资源链接工具并执行链接操作:
- 先全局安装工具:执行
npm i -g react-native-asset,使用yarn的话执行yarn global add react-native-asset - 项目根目录下执行
npx react-native-asset完成资源自动挂载
- 先全局安装工具:执行
- iOS端额外进入ios目录执行
pod install,之后重新编译双端项目即可正常引用自定义字体
方案2:手动挂载字体(无额外依赖,适合特殊定制场景)
如果不想安装额外工具,可以手动完成双端字体挂载:
- Android端:逐层创建
android/app/src/main/assets/fonts目录,将字体文件直接放入该目录,重新编译打包即可自动识别 - iOS端:打开ios目录下的.xcworkspace工程文件,将字体文件拖入Xcode的项目资源导航栏,勾选Copy items if needed选项;接着在
Info.plist文件中添加Fonts provided by application配置项,将所有引入的字体文件名(带后缀)填入对应数组,最后执行pod install重新编译即可
避坑提示
- 不要为了用link命令刻意降级React Native CLI版本,极易引发依赖版本冲突,后续升级维护成本极高
- 字体文件命名尽量避免中文、特殊符号、不规则空格,否则可能出现编译期识别失败的问题
- 代码中引用字体时,需要填写字体的内置PostScript名称而非文件名,iOS端可通过系统自带的字体册工具查看,Android端可优先用文件名测试,若不生效再查询字体内部名
内容的提问来源于stack exchange,提问作者max
相关产品推荐
相关产品推荐

