Attempted import error: 'uuid' does not contain a default export (imported as 'uuid') In React

Attempted import error: 'uuid' does not contain a default export (imported as 'uuid') In React

错误是:尝试导入错误:'uuid' 不包含默认导出(导入为 'uuid')

这是代码示例

import uuid from "uuid";
//import * as uuid from "uuid";
import TodoInput from "./components/TodoInput";
import TodoList from "./components/TodoList";

export default class App extends Component {
state = {
  items: [
    { id: 1, title: "wake up" },
    { id: 2, title: "make breakfast" }
  ],
  id: uuid(),
  item: "",
  editItem: false
};
....
....

这背后的原因是什么?

使用react-uuid

npm i react-uuid
import uuid from 'react-uuid';

const id = uuid();

因为 uuid 包没有 default 导出,正如错误明确指出的那样。

(它曾经存在,但已经removed)

Once installed, decide which type of UUID you need. RFC4122 provides for four versions, all of which are supported here.

(文档位于 https://www.npmjs.com/package/uuid)

因此您需要选择以下其中一项

import {v1 as uuid} from "uuid"; 
// import {v3 as uuid} from "uuid"; 
// import {v4 as uuid} from "uuid"; 
// import {v5 as uuid} from "uuid"; 

取决于您想要的实现方式。


如果您使用的是旧版本的软件包,您可以使用其中一个

import uuid from 'uuid/v1'
// import uuid from 'uuid/v3'
// import uuid from 'uuid/v4'
// import uuid from 'uuid/v5'

创建版本 4(随机)UUID

从 'uuid' 导入 { v4 作为 uuidv4 };

id:uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' https://www.npmjs.com/package/uuid

在命令行中,运行

npm i react-uuid

然后在您的项目中尝试

import uuid from 'react-uuid';
const id = uuid();

我认为如果在导入 v4 时添加 uuid 我认为它会起作用

我的意思是这样的

import uuid from 'uuid/v4';

执行 yarn add uuid 后,node_modules 中的 uuid 文件夹包含 v1、v2、v3、v4 模块。根据您的选择将其中任何一个导入为 uuid。

import {v4 as uuid} from 'uuid'
const id = uuid()

这解决了我的问题。 版本 "uuid": "^7.0.3" 和 "react": "^16.13.1",

这对我有用。

首先,运行

npm install uuid

然后

import { v4 as uuidv4 } from 'uuid';

要使用它只需调用

uuidv4();

已删除默认导出,如 npm page of UUID 中所述。

来自nmpjs.com

Default Export Removed

uuid@3 was exporting the Version 4 UUID method as a default export:

const uuid = require('uuid'); // <== REMOVED!

This usage pattern was already discouraged in uuid@3 and has been removed in uuid@7.

const uuid = require('uuid');

而不是

import uuid from 'uuid'

之前可以访问默认状态,这在新版本中不可用。
请浏览更新:https://www.npmjs.com/package/uuid.

import { v4 as uuidv4 } from 'uuid';

npm 文档中的包中提供了其他可能的访问方式。

而不是做: 从 'uuid'

导入 uuid

这对我有用(用于创建随机字符串): 从 'uuid/v4'

导入 uuid

import uuid from 'uuid/dist/v4'
这会起作用

在命令行中安装uuid:

npm i react-uuid

在您的项目中:

import { v4 as uuid } from "uuid";

const id = uuid();

我用过这个:

import v1 from 'uuid/v1.js' 

const uuid = v1;

成功了!!

这对我有用。

首先,运行

npm install uuid

然后

import { v4 as uuidv4 } from 'uuid';

要使用它只需调用 uuidv4()

删除 node_modulespackage-lock.json 并重新安装 npm installnpm install react-scripts.

  1. 纱线添加uuid
  2. 从 'uuid'
  3. 导入 {v4 作为 uuid}
  4. console.log(uuid());

正如其他人已经指出的那样,解构变量:

const { v4 as uuid } from 'uuid';

在您的代码中使用:

const id = uuid();

如果您在 Jest 测试中遇到此错误,请将以下内容添加到您的 moduleNameMapper:

moduleNameMapper: {
    '^uuid$': 'uuid'
}

有时(由于某些 incomplete/interrupted 依赖项安装)您需要做的就是删除 node_modules 文件夹并再次 运行 npm install
瞧(在大多数情况下)。