为什么 json-schema-faker return 拉丁文代表一切?
Why does json-schema-faker return Latin for everything?
使用以下架构:
和一个非常简单的 package.json
,唯一的依赖项是 json-schema-faker
(0.5.0.rc16),当我 运行 以下代码时,我看到底部显示的输出(例子运行)
jsf = require('json-schema-faker');
var schema = {
"type": "object",
"properties": {
"users": {
"type": "array",
"minItems": 3,
"maxItems": 5,
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"unique": true,
"minimum": 1
},
"firstName": {
"type": "string",
"faker": "name.findName"
},
"lastName": {
"type": "string",
"faker": "name.lastName"
},
"email": {
"type": "string",
"faker": "internet.email"
}
},
"required": ["id", "firstName", "lastName", "email"]
}
}
},
"required": ["users"]
};
var mylist = jsf.generate(schema);
console.log("mylist: ", mylist);
输出
mylist: { users:
[ { id: 46919647,
firstName: 'commodo ut deserunt',
lastName: 'magna',
email: 'ex minim irure' },
{ id: 36864773,
firstName: 'aliquip elit laborum',
lastName: 'co',
email: 'nisi Ut laboris dolore' },
{ id: 62231151,
firstName: 'adipisicing id reprehenderit exercitation',
lastName: 'tempor culpa deserunt Excepteur nisi',
email: 'est enim' },
{ id: 57427341,
firstName: 'eu ullamco reprehenderit mollit',
lastName: 'cupidatat ut non',
email: 'id dolore sed et' } ] }
为什么都是拉丁文?我在这里做错了什么。
完全相同的事情发生在我身上。我一直在关注 Cory House 的 "Building a java script development environment" 关于 pluralSight 的课程。为了与所有依赖项保持同步,我更新到最新的 json-schema-faker 版本 0.5.0-rc16.
这打破了 json 一代,我什么都学了拉丁语。当我恢复到 0.3.6 版时,我可以正确生成名字、姓氏和电子邮件。
这是我使用的模式:
export const schema = {
"type": "object",
"properties": {
"users": {
"type": "array",
"minItems": 3,
"maxItems": 5,
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"unique": true,
"minimum": 1
},
"firstName": {
"type": "string",
"faker": "name.firstName"
},
"lastName": {
"type": "string",
"faker": "name.lastName"
},
"email": {
"type": "string",
"faker": "internet.email"
}
},
"required": ["id", "firstName", "lastName", "email"]
}
}
},
"required": ["users"]
};
这是相应的 java 脚本:
import jsf from 'json-schema-faker';
import {schema} from './mockDataSchema';
import fs from 'fs';
import chalk from 'chalk';
const json = JSON.stringify(jsf(schema));
fs.writeFile("./src/api/db.json", json, function (err) {
if (err) {
return console.log(chalk.red(err));
} else {
console.log(chalk.green("Mock data generated."));
}
});
输出
{
"users": [{
"id": 49569377,
"firstName": "Gerald",
"lastName": "Turcotte",
"email": "Eda_Lemke66@hotmail.com"
},
{
"id": 84739169,
"firstName": "Jerad",
"lastName": "Gerhold",
"email": "Reynold.Ryan@yahoo.com"
},
{
"id": 78507259,
"firstName": "Hayden",
"lastName": "Schultz",
"email": "Kassandra64@yahoo.com"
}
]
}
但是说了这么多,现在开始工作,经过一番谷歌搜索,我发现了这个
0.5.0-RC2 possible bug with faker 'date.past' #275
所以我对 package.json 进行了这些更改:
"json-schema-faker": "^0.5.0-rc16",
"faker": "^4.1.0",
并清除了我的 node_modules 文件夹和 package-lock.json 文件并进行了干净的 npm 安装。
我将上面的代码改成了这个,然后重新运行脚本,结果成功。
jsf.extend('faker', () => require('faker'));
const json = JSON.stringify(jsf.generate(schema));
错误报告指出
Hi, since 0.5.x all external generators (chance, faker, etc.) are not built-in, so you need to register as the docs
希望这对你有用。
添加到@joe 的回答中。我采取了以下步骤
npm install --save-dev faker json-schema-faker
- 在数据生成器文件中,我像这样扩展了
json-schema-faker
import faker from 'faker'
jsf.extend('faker', () => {return faker});
const json = JSON.stringify(jsf.generate(mockUserSchema));
使用以下架构:
和一个非常简单的 package.json
,唯一的依赖项是 json-schema-faker
(0.5.0.rc16),当我 运行 以下代码时,我看到底部显示的输出(例子运行)
jsf = require('json-schema-faker');
var schema = {
"type": "object",
"properties": {
"users": {
"type": "array",
"minItems": 3,
"maxItems": 5,
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"unique": true,
"minimum": 1
},
"firstName": {
"type": "string",
"faker": "name.findName"
},
"lastName": {
"type": "string",
"faker": "name.lastName"
},
"email": {
"type": "string",
"faker": "internet.email"
}
},
"required": ["id", "firstName", "lastName", "email"]
}
}
},
"required": ["users"]
};
var mylist = jsf.generate(schema);
console.log("mylist: ", mylist);
输出
mylist: { users:
[ { id: 46919647,
firstName: 'commodo ut deserunt',
lastName: 'magna',
email: 'ex minim irure' },
{ id: 36864773,
firstName: 'aliquip elit laborum',
lastName: 'co',
email: 'nisi Ut laboris dolore' },
{ id: 62231151,
firstName: 'adipisicing id reprehenderit exercitation',
lastName: 'tempor culpa deserunt Excepteur nisi',
email: 'est enim' },
{ id: 57427341,
firstName: 'eu ullamco reprehenderit mollit',
lastName: 'cupidatat ut non',
email: 'id dolore sed et' } ] }
为什么都是拉丁文?我在这里做错了什么。
完全相同的事情发生在我身上。我一直在关注 Cory House 的 "Building a java script development environment" 关于 pluralSight 的课程。为了与所有依赖项保持同步,我更新到最新的 json-schema-faker 版本 0.5.0-rc16.
这打破了 json 一代,我什么都学了拉丁语。当我恢复到 0.3.6 版时,我可以正确生成名字、姓氏和电子邮件。
这是我使用的模式:
export const schema = {
"type": "object",
"properties": {
"users": {
"type": "array",
"minItems": 3,
"maxItems": 5,
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"unique": true,
"minimum": 1
},
"firstName": {
"type": "string",
"faker": "name.firstName"
},
"lastName": {
"type": "string",
"faker": "name.lastName"
},
"email": {
"type": "string",
"faker": "internet.email"
}
},
"required": ["id", "firstName", "lastName", "email"]
}
}
},
"required": ["users"]
};
这是相应的 java 脚本:
import jsf from 'json-schema-faker';
import {schema} from './mockDataSchema';
import fs from 'fs';
import chalk from 'chalk';
const json = JSON.stringify(jsf(schema));
fs.writeFile("./src/api/db.json", json, function (err) {
if (err) {
return console.log(chalk.red(err));
} else {
console.log(chalk.green("Mock data generated."));
}
});
输出
{
"users": [{
"id": 49569377,
"firstName": "Gerald",
"lastName": "Turcotte",
"email": "Eda_Lemke66@hotmail.com"
},
{
"id": 84739169,
"firstName": "Jerad",
"lastName": "Gerhold",
"email": "Reynold.Ryan@yahoo.com"
},
{
"id": 78507259,
"firstName": "Hayden",
"lastName": "Schultz",
"email": "Kassandra64@yahoo.com"
}
]
}
但是说了这么多,现在开始工作,经过一番谷歌搜索,我发现了这个
0.5.0-RC2 possible bug with faker 'date.past' #275
所以我对 package.json 进行了这些更改:
"json-schema-faker": "^0.5.0-rc16",
"faker": "^4.1.0",
并清除了我的 node_modules 文件夹和 package-lock.json 文件并进行了干净的 npm 安装。
我将上面的代码改成了这个,然后重新运行脚本,结果成功。
jsf.extend('faker', () => require('faker'));
const json = JSON.stringify(jsf.generate(schema));
错误报告指出
Hi, since 0.5.x all external generators (chance, faker, etc.) are not built-in, so you need to register as the docs
希望这对你有用。
添加到@joe 的回答中。我采取了以下步骤
npm install --save-dev faker json-schema-faker
- 在数据生成器文件中,我像这样扩展了
json-schema-faker
import faker from 'faker'
jsf.extend('faker', () => {return faker});
const json = JSON.stringify(jsf.generate(mockUserSchema));