最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - ReferenceError: Cannot access module before initialization - Stack Overflow

programmeradmin4浏览0评论

I already created my model 'order' I try to add new order into my mongodb, but keep showing this error,please help me! Thanks I rely on the add_order.ejs to submit the form. "ReferenceError: Cannot access 'order' before initialization" I have the other two model 'recipe' and 'customer',but they worked! I don't understand why only order has error? order.js

const userSchema = new mongoose.Schema({
    order_id :{
        type: String,required : true
    },
    sum :{
        type:Number,
        required : true,
    },
    account :{
        type :String,
        required : true,
    }
});
module.exports = mongoose.model('order',userSchema);

routes.js

const express = require('express');
const mongoose = require('mongoose');
const router = express.Router();
const customer = require('../models/customer');
const recipe = require('../models/recipe');
const multer = require('multer');
const { GridFSBucketReadStream } = require('mongodb');
const fs = require('fs');
const order = require('../models/order');

//insert an order into database route
router.post('/add_order', upload, (req,res) => {
    const order = new order({
        order_id : req.body.order_id,
        sum : req.body.sum,
        account : req.body.account,
    });
    order.save((err) => {
        if(err){
            res.json({message : err.message, type :'danger'});
        } 
        else{
            req.session.message={
                type:'success',
                message :'Customer added successfully!'
            };
            res.redirect("/");
        }
    })
})

add_order.ejs

      <form action="/add_order" method="POST" id="add-form" enctype="multipart/form-data">
        <div class="one_third first">
          <label for="name">order_id <span>*</span></label>
          <input type="text" name="order_id" placeholder="Enter order_id" size="22" required /></td>
        </div>
        <div class="one_third">
          <label for="email">sum <span>*</span></label>
          <input type="number" name="sum" placeholder="Enter sum"  size="22" required>
        </div>
        <div class="one_third">
          <label for="url">account <span>*</span></label>
          <input type="text" name="account" placeholder="Enter account" size="22" required />
        </div>
          <input type="submit" name="submit" value="Add order" />
          <input type="reset" name="reset" value="Reset Form">
       </form> 

I already created my model 'order' I try to add new order into my mongodb, but keep showing this error,please help me! Thanks I rely on the add_order.ejs to submit the form. "ReferenceError: Cannot access 'order' before initialization" I have the other two model 'recipe' and 'customer',but they worked! I don't understand why only order has error? order.js

const userSchema = new mongoose.Schema({
    order_id :{
        type: String,required : true
    },
    sum :{
        type:Number,
        required : true,
    },
    account :{
        type :String,
        required : true,
    }
});
module.exports = mongoose.model('order',userSchema);

routes.js

const express = require('express');
const mongoose = require('mongoose');
const router = express.Router();
const customer = require('../models/customer');
const recipe = require('../models/recipe');
const multer = require('multer');
const { GridFSBucketReadStream } = require('mongodb');
const fs = require('fs');
const order = require('../models/order');

//insert an order into database route
router.post('/add_order', upload, (req,res) => {
    const order = new order({
        order_id : req.body.order_id,
        sum : req.body.sum,
        account : req.body.account,
    });
    order.save((err) => {
        if(err){
            res.json({message : err.message, type :'danger'});
        } 
        else{
            req.session.message={
                type:'success',
                message :'Customer added successfully!'
            };
            res.redirect("/");
        }
    })
})

add_order.ejs

      <form action="/add_order" method="POST" id="add-form" enctype="multipart/form-data">
        <div class="one_third first">
          <label for="name">order_id <span>*</span></label>
          <input type="text" name="order_id" placeholder="Enter order_id" size="22" required /></td>
        </div>
        <div class="one_third">
          <label for="email">sum <span>*</span></label>
          <input type="number" name="sum" placeholder="Enter sum"  size="22" required>
        </div>
        <div class="one_third">
          <label for="url">account <span>*</span></label>
          <input type="text" name="account" placeholder="Enter account" size="22" required />
        </div>
          <input type="submit" name="submit" value="Add order" />
          <input type="reset" name="reset" value="Reset Form">
       </form> 
Share Improve this question asked Jun 5, 2021 at 17:53 李侑珊李侑珊 51 gold badge1 silver badge3 bronze badges 1
  • const order = new order this is a no-no. Rename one of the variables. – ASDFGerte Commented Jun 5, 2021 at 17:55
Add a ment  | 

1 Answer 1

Reset to default 3

You have a problem on this:

const order = require('../models/order');

//insert an order into database route
router.post('/add_order', upload, (req,res) => {
    const order = new order**({ // <- you trying to change an immutable class definition

Class variable and instance variable needs to have different names.

Remend you to change your class name to Order (with capital O): const Order = require('../models/order');

then call your instance like this: const order = new Order({ ... });

See more

发布评论

评论列表(0)

  1. 暂无评论