commonjs写js文件没有导出也可以require引入吗?

发布于 2022-09-07 07:52:45 字数 2621 浏览 15 评论 0

我写的node+mongoose项目,models文件夹下存放定义mongoose 模块的代码,如果我写了module.exports= 导出的话node就报错,

下面是一个model

const mongoose = require('mongoose')
const Schema = mongoose.Schema
const mongoosePaginate = require('mongoose-paginate')

// 表单模板
/**
*fieldType:
单行文本框 (input)text
多行文本框 textarea
数字 (input)number
邮箱地址 (input)email
日期 (input)date
单选按钮  (input)radio
复选框 (input)checkbox
下拉列表框 select
表格 table
文件 (input)file(url)
*/
const FormModelSchema = new Schema({
    formName: String,
    instruction: String,
    userName: String,
    updateUserName: String,
    userId:String,
    updateUserId: String,
    createAt: {type: Date, default: Date.now},
    updateAt: {type: Date, default: Date.now},
    formFields: [{
        displayName: String,
        // fieldName:String,
        fieldType: String,
        placeholder:String,
        isRequired:{type: Boolean, default: false},
        value:String,
        column:String,
        fieldOptions:[{
            displayText:String,
        }],
        fieldOrder:Number
        //图片 or 文件  限制图片/文件大小
        // maxSize:String, 文字长度
    }]
})
// Defines a pre hook for the document.
FormModelSchema.pre('save', function(next) {
    if (this.isNew) {
        this.createAt = this.   updateAt = Date.now()
    }
    else {
        this.updateAt = Date.now()
    }
    next()
})
FormModelSchema.plugin(mongoosePaginate)

var FormModel=mongoose.model('FormModel', FormModelSchema)
module.exports=FormModel

这是报错信息:

clipboard.png

但是如果我不导出,反而不会报错,这是什么原因呢?app.js中就是直接require 引入models文件夹下的js文件。

问题二:
在不导出的前提下,我另一个model代码结构和定义以及保存的方法都跟这个几乎是一样的,但是另一个就可以正常存数据,这个文件就不可以存,每次一调用存数据的接口就说formModel 不存在。这又是什么原因呢?

下面是我调用该model的代码:

'use strict'

var mongoose = require('mongoose')
const FormModel = mongoose.model('FormModel')

exports.createFormModel = async(data) => {
    let FormModel = new FormModel(data)
    let flag = false
    await FormModel.save(function (err) {
        if (err) {
            flag = false
            return console.error(err)
        }else{
            flag=true
        }
    })
    return flag
}
exports.updateFormModel = async(data) => {
    let FormModel = new FormModel(data)
    let flag = false
    await FormModel.update(function (err) {
        if (err) {
            flag = false
            return console.error(err)
        }else{
            flag=true
        }
    })
    return flag
}

这是报错:

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小帐篷 2022-09-14 07:52:45

没用过 Mongoose,怎么错一眼看不出,不调试一下也不知道。不过不导出就相当于不执行,所以不报错是正常的。题主还是想办法除错吧,并且仔细读一读文档。没有错误除不掉,也只有踏踏实实除错才有机会获得提升。

梦忆晨望 2022-09-14 07:52:45

对于在不导出的前提下,我另一个model代码结构和定义以及保存的方法都跟这个几乎是一样的,但是另一个就可以正常存数据,这个文件就不可以存,每次一调用存数据的接口就说formModel 不存在。我找到了原因,是因为我创建FormModel实例的时候变量名称跟这个冲突了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文