在执行了"npm install --save-dev"后,无法找到模块“faker”。

28

我希望本地安装所有模块,因此我使用"--save-dev"开关安装所有内容,这将更新package.json文件。

我正在尝试包含这个模块,所以我使用以下命令进行安装:

npm install Faker --save-dev

我的应用程序结构如下:

app 控制器 模型 node_modules Faker server.js

Faker 在正确的位置,但当我在 server.js 文件中添加以下代码时:

var faker = require('./Faker');

我收到了以下错误信息:

Error: Cannot find module './Faker'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/paulcowan/projects/async-talk/server.js:23:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10) 

但这个有效:
var Faker = require('./node_modules/Faker');

我没想到还需要包含node_modules这一部分。

8个回答

54

在进行yarn upgrade --latest后,我因另一个原因遇到了以下错误:13天前发布了一个6.6.6版本,它完全是空的(只有一个名为endgame的提交):https://www.npmjs.com/package/faker

这是黑客攻击吗?是个笑话吗?如果是,有趣吗?不确定...

要解决此问题,只需回滚到上一个版本即可。

yarn add --dev faker@5.5.3
# or if you use npm
npm install --save-dev faker@5.5.3

编辑

根据下面 akop 的回答,最安全的方法似乎是切换到 faker-js

yarn remove faker
yarn add --dev @faker-js/faker

然后更改您的导入

import * as faker from 'faker';
// to 
import * as faker from '@faker-js/faker';

他们的文档中也有Typescript的类型定义,但我没有使用它也可以正常工作:github.com/faker-js/faker

编辑2

我与该软件包的作者交谈过,他是一个有趣而疯狂的人。由于知识产权盗窃事件,他有些生气,因此破坏了他的开源工作。

现在他正在开发一款2000年代风格的虚拟桌面,只是为了好玩 buddypond.com


20

我想向大家说明为什么会出现这个问题。
faker的所有者在v6.6.6时从GitHub上将其删除。
您可以在此处查看:
https://github.com/marak/Faker.js/

因此,需要由社区来完成它。
新的存储库:
https://github.com/faker-js/faker

这是Faker的官方、稳定分支。

安装

请用 @faker-js/faker 替换你的 faker 依赖项。

npm install @faker-js/faker --save-dev

Node.js

const { faker } = require('@faker-js/faker');

14

6
记得安装@types/faker,这样Typescript用户可以使用import faker from 'faker';而不会出现错误。

对于一些人来说,这将是 import * as faker from 'faker'; - waternova
这个需要作为 --save-dev 安装还是普通安装? - ekkis

4

最新版本的faker是v7.3.0。

您应该按照以下方式导入faker:

import { faker } from '@faker-js/faker';

下面这个不起作用:

import faker from 'faker';


3
为了让你的require起作用,你需要执行以下步骤:
var Faker = require('Faker');

npm安装的任何包都需要通过名称引用。只有本地需要路径形式的require的模块。你的require(./Faker);的意思是"从与此文件相同的目录中,引用名为'Faker'的模块"


3

正确解决方法: 回滚到faker的先前版本,即安装5.5.3或更低版本。这样可以正常工作。

npm install faker @5.5.3

或者

yarn install faker @5.5.3

注意:Faker已更名为fakerjs,因此如果您想使用最新版本的faker,请使用以下命令从fakerjs安装:

npm i @faker-js/faker


1
移除 ./。这样告诉 Node 在当前目录查找模块。
var faker = require('Faker');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接