Skip to content

模块与 API

基于 @faker-js/faker v10 编写

速查

  • 导入:import { faker } from '@faker-js/faker'(默认英文);本地化用 fakerZH_CN
  • 数据按模块组织:person / internet / location / finance / commerce / company / date / lorem / string / number / datatype / helpers
  • 核心改名(必记)name→personaddress→location(v8)|datatype.number→number.intrandom.* 整模块移除、helpers.unique 移除(v9)|internet.userName→username(v10)
  • 数值归 faker.numberint / float),字符串归 faker.stringuuid / alphanumeric),faker.datatype 现仅剩 boolean() 等少量
  • 造对象数组的标准方式:faker.helpers.multiple(fn, { count })

导入

ts
// ESM(推荐)
import { faker } from "@faker-js/faker";

// CommonJS(需 Node v20.19+ / v22.13+ 的 ESM-require)
const { faker } = require("@faker-js/faker");

// 浏览器(动态 import)
const { faker } = await import("https://esm.sh/@faker-js/faker");

// 本地化实例(按需导入预构建实例)
import { fakerEN } from "@faker-js/faker";
import { fakerZH_CN } from "@faker-js/faker";
import { fakerDE as faker } from "@faker-js/faker";

默认 faker 实例输出英文数据。中文 / 其它语言按需导入对应实例(详见 Helpers 与本地化)。

模块体系

v10 的模块清单(API 侧栏):Airline、Animal、Book、Color、Commerce、Company、Database、Datatype、Date、Finance、Food、Git、Hacker、Helpers、Image、Internet、Location、Lorem、Music、Number、Person、Phone、Science、String、System、Vehicle、Word。下面是前端测试最常用的一批:

模块常用方法示例 / 备注
faker.personfirstName(sex?) / lastName() / fullName() / sex() / sexType() / jobTitle()faker.person.fullName()"Rowan Nikolaus"faker.name 已改名
faker.internetemail({firstName,lastName}) / username() / url() / password()faker.internet.username()v10:旧 userName 已改名
faker.locationcity() / country() / zipCode() / streetAddress() / latitude()faker.location.city()faker.address 已改名
faker.financeamount() / accountNumber() / currencyCode() / iban()faker.finance.amount()
faker.commerceproductName() / price() / department()faker.commerce.productName()
faker.companyname() / catchPhrase() / buzzPhrase()faker.company.name()
faker.datepast() / future() / between({from,to}) / recent() / soon() / birthdate()faker.date.past()
faker.loremword() / words() / sentence() / paragraph() / paragraphs()faker.lorem.paragraph()
faker.stringuuid() / alphanumeric(n) / alpha() / numeric() / nanoid()faker.string.uuid()(字符串都归这里)
faker.numberint({min,max}) / float({min,max,fractionDigits})faker.number.int({ min: 1, max: 10 })(数值都归这里)
faker.datatypeboolean(probability?)faker.datatype.boolean()number / float 已移走到 faker.number
faker.helpersarrayElement / multiple / fake / weightedArrayElement / uniqueArray工具方法,详见 Helpers 与本地化

完整对象工厂示例(官方 README):

ts
import { faker } from "@faker-js/faker";

export function createRandomUser() {
  return {
    userId: faker.string.uuid(),
    username: faker.internet.username(), // v10:username
    email: faker.internet.email(),
    avatar: faker.image.avatar(),
    password: faker.internet.password(),
    birthdate: faker.date.birthdate(),
    registeredAt: faker.date.past(),
  };
}

// multiple 是造对象数组的标准方式
export const users = faker.helpers.multiple(createRandomUser, { count: 5 });

⚠️ 破坏性改名全表(v8 / v9 / v10)

这是跟旧教程最容易踩的坑。下面按版本列出全部主要改名 / 移除。

v8.0:模块大重排

旧写法新写法说明
faker.name.*faker.person.*Name 模块更名 Person
faker.address.*faker.location.*Address 模块更名 Location
faker.datatype.string() 等字符串方法faker.string.*String 拆为独立模块
数值类方法faker.number.*Number 拆为独立模块
faker.locale = 'xx'(运行时切换)按需导入本地化实例移除 locale 运行时切换

v9.0:清理 v8 的废弃项(Node 18+)

旧写法新写法说明
faker.datatype.number()faker.number.int() / faker.number.float()已移除
faker.datatype.float()faker.number.float()已移除
faker.datatype.uuid()faker.string.uuid()各自归专用模块
faker.random.alpha()faker.string.alpha()整个 faker.random 模块移除
faker.random.alphaNumeric()faker.string.alphanumeric()同上
faker.random.numeric()faker.string.numeric()同上
faker.random.word() / words()faker.lorem.word() / faker.word.sample()同上
faker.helpers.unique()enforce-unique / faker.helpers.uniqueArray()已移除(全局 store 隐患,详见 Helpers 与本地化

v10.0:ESM-only、Node 20+

旧写法新写法说明
faker.internet.userName()faker.internet.username()驼峰 N 改小写 n(细节坑)
faker.internet.color()faker.color.rgb()
faker.image.urlPlaceholder()faker.image.url() / dataUri()v9.4 弃用 → v10 移除(via.placeholder.com 不稳)
faker.image.avatarLegacy()faker.image.avatar()
faker.finance.maskedNumber()(无直接替代)移除

v10 另一处行为变更:Word 模块默认 resolution 策略改为 'fail'——按条件(如长度)找不到符合的词时会抛错而非返回随机词;要恢复旧行为传 { strategy: 'any-length' }

反模式速记

出现以下写法即为过时 / 已失效,应替换:faker.name.*faker.address.*faker.datatype.number()faker.random.*faker.helpers.unique()faker.internet.userName()