npm install --save-dev 后找不到模块 faker

dag*_*da1 28 node.js faker.js

我想在本地安装所有模块,因此我使用更新 package.json 的“--save-dev”开关安装所有内容。

我试图包含模块,因此我使用以下命令安装:

npm install Faker --save-dev
Run Code Online (Sandbox Code Playgroud)

我的应用程序结构是这样的:

应用程序控制器模型node_modules Faker server.js

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

var faker = require('./Faker');
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

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) 
Run Code Online (Sandbox Code Playgroud)

但这有效:

var Faker = require('./node_modules/Faker');
Run Code Online (Sandbox Code Playgroud)

我不认为我必须包含 node_modules 部分。

Jea*_*eau 56

之后,yarn upgrade --latest我因另一个原因而收到此错误:6.6.6版本已在 13 天前发布,并且完全是空的(仅调用了一个提交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
Run Code Online (Sandbox Code Playgroud)

编辑

按照下面的答案akop,最安全的方法似乎是切换到faker-js

yarn remove faker
yarn add --dev @faker-js/faker
Run Code Online (Sandbox Code Playgroud)

然后更改您的导入

import * as faker from 'faker';
// to 
import * as faker from '@faker-js/faker';
Run Code Online (Sandbox Code Playgroud)

他们的文档上还有 Typescript 的类型定义,但它对我来说没有作用:github.com/faker-js/faker

编辑2

我与该软件包的作者交谈过,他是一个有趣而疯狂的人。他因为知识产权被盗而生气,所以他毁掉了他的开源作品。

他现在开发了一个 2000 年代风格的虚拟桌面来娱乐buddypond.com


Ahm*_*ani 20

我想向大家提一下为什么会出现这个问题。
faker 的所有者在 v6.6.6 时从 GitHub 删除了它,
您可以在这里看到: https:
//github.com/marak/Faker.js/

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

这是 Faker 的官方稳定分叉。

安装

请将您的faker依赖项替换为@faker-js/faker.

npm install @faker-js/faker --save-dev
Run Code Online (Sandbox Code Playgroud)

Node.js

const { faker } = require('@faker-js/faker');
Run Code Online (Sandbox Code Playgroud)


use*_*157 14

Faker(和colors)被作者毁掉了。原因尚不完全清楚。

您可以使用 endgame-commit 之前的版本 (5.5.3),正如Jean Claveau 所描述的那样。
将来,您应该切换到新的社区版本,它称为fake-js。看看这里:新 faker-js 的 Github
还有一个常见问题解答,其中也解释了旧版本会发生什么情况。


Zen*_*tzi 6

过来的 Typescript 用户,记得安装@types/faker. 然后,import faker from 'faker';就可以正常工作了。


Zac*_*Zac 5

faker的最新版本是v7.3.0。

您应该以这种方式导入 faker:

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

下面这个不起作用:

import faker from 'faker';


qub*_*yte 3

为了让你require的工作,你需要做:

var Faker = require('Faker');
Run Code Online (Sandbox Code Playgroud)

npm 安装的任何软件包都需要名称。只有本地需要的模块才需要类似路径的 require。您的require(./Faker);意思是“需要与该文件位于同一目录的模块,称为‘Faker’”