使用import而不是require()时,带有uuid的MongooseError

时间:2018-10-23 09:13:57

标签: node.js typescript mongoose uuid nestjs

我收到以下错误:

MongooseError: document must have an _id before saving

当我尝试使用uuid和我的API使用import uuidv4 from 'uuid/v4'; 创建对象(香槟)时

const uuidv4 = require('uuid/v4');

当我使用时可以使用:

uuid

我的Campagne对象及其import * as mongoose from 'mongoose'; import uuidv4 from 'uuid/v4'; export const CampagneSchema = new mongoose.Schema({ _id: { type: String, default: uuidv4 }, dateDebut: Date, dateFin: Date, reduction: Number, }); 正确创建。

这是我对象的架构的完整代码:

import

TSLint告诉我使用require()而不是import,并在我的IDE中将其强调为错误,但绝对不能如上所示。

有人可以解释一下为什么会这样吗?

有关信息,我将NestJS node.js框架与Typescript一起使用。

要澄清:

我想知道为什么mongooseuuid工作,而不为require工作(uuidPreferences > Package Settings > Package Control > Settings - User工作)

2 个答案:

答案 0 :(得分:1)

我在Github node-uuid上发现了一个问题的答案。 以下代码正在工作:

import {v4 as uuid} from 'uuid';

https://github.com/kelektiv/node-uuid/issues/245

  

import uuid from 'uuid/v4';语法不起作用,至少在Typescript v3上运行的Node v10.9.0项目中(没有webpack或babel,只有ts-node才能编译/运行Typescript)

>      

我收到以下错误:TypeError: v4_1.uuid is not a function

     

另一方面,import {v4 as uuid} from 'uuid';正常工作

     

(在uuid v3.3.2上测试)

感谢您的回答。

答案 1 :(得分:0)

删除_id: { type: String, default: uuidv4 },

猫鼬会自动生成_id

并使用const ddd = require(...)

我相信ES6模块不能在Node项目中正常工作