鍍金池/ 問答/Linux  網絡安全  HTML/ commonjs寫js文件沒有導出也可以require引入嗎?

commonjs寫js文件沒有導出也可以require引入嗎?

我寫的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

回答
編輯回答
絯孑氣

對于在不導出的前提下,我另一個model代碼結構和定義以及保存的方法都跟這個幾乎是一樣的,但是另一個就可以正常存數據,這個文件就不可以存,每次一調用存數據的接口就說formModel 不存在。我找到了原因,是因為我創(chuàng)建FormModel實例的時候變量名稱跟這個沖突了。

2018年2月27日 08:51
編輯回答
你的瞳

沒用過 Mongoose,怎么錯一眼看不出,不調試一下也不知道。不過不導出就相當于不執(zhí)行,所以不報錯是正常的。題主還是想辦法除錯吧,并且仔細讀一讀文檔。沒有錯誤除不掉,也只有踏踏實實除錯才有機會獲得提升。

2017年8月25日 04:22