SyntaxError:意外的令牌“导出”试图将用户故事合并到我的项目中

问题描述

您好,我知道它应该是 module.exports 而不是导出,但这甚至不起作用并让我出错:Route.get() 需要一个回调函数,但得到了 [object Undefined] 任何想法我该怎么做抱歉,我是初学者,我已经发布了我尝试添加用户故事的 3 个 js 文件和 server.js 文件

一个 .js 文件

    const scheduleData = require('../models/schedule.js'); 


exports.getschedule= async (req,res) => {
    try {
        const allschedule= await scheduleData.find(); 

        res.status(200).json(allschedules); //Ok
    } catch (error) {
        res.status(404).json({message: error.message}) //Not Founnd
    }
}

exports.createschedules= async (req,res) => {
    const schedule= req.body; 

    const newschedule = new scheduleData(schedule); 

    try {
        await newschedule.save(); 
        res.status(201).json(newschedule); //Created
    
    } catch (error) {
        res.status(409).json({message: error.message}) //Conflict 
    }

} 

exports.deleteschedule= async (req,res) => {
    const id= req.params.id; 


    try {
       await scheduleData.findByIdAndRemove(id).exec(); 
       res.send('Successfully deleted!')
    
    } catch (error) {
        console.log(error); 
        
    }

}

第二个文件

const express = require ('express')
const  { getschedule} = require ( '../../controllers/schedule.js')
const  { createschedule} = require ( '../../controllers/schedule.js')
const  { deleteschedule} = require ( '../../controllers/schedule.js')

const router = express.Router();



router.get('/',getschedule);
router.post('/',createschedule);
router.delete('/:id',deleteschedule);



//export default router;
module.exports = router;

第三场

 const mongoose = require  ('mongoose'); 

const scheduleSchema = mongoose.Schema({
    Day: String,FirstP: String,SecondP: String,ThirdP: String,FourthP: String,FifthP: String,tutorial: {
        type: String,default: 'A'
    },}); 

//const schedule= mongoose.model('schedule',scheduleSchema);
//export default schedule;
module.exports = schedule=mongoose.model('schedule',scheduleSchema);

server.js 文件

    const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const path = require('path');
const auth = require('./routes/api/auth.routes.js');
const scheduleroutes = require ('./routes/api/schedule'); 
const courses = require('./routes/api/courses');


const app = express();

// Bodyparser Middleware
app.use(bodyParser.json());

// DB Config
const db = require('./config/keys').mongoURI;


// Connect to Mongo
mongoose
    .connect(db,{ useNewUrlParser: true }) // Adding new mongo url parser
    .then(() => console.log('MongoDB Connected...'))
    .catch(err => console.log(err));

mongoose.set('debug',true);

// Use Routes
app.use('/api/courses',courses);
app.use(express.json());
app.use('/api/auth',auth);

app.use('/api/schedule',scheduleroutes);
//app.use(cors({ origin: 'http://localhost:3000/',credentials: true }));

if (process.env.NODE_ENV === 'production') {
    // Set static folder
    app.use(express.static('client/build'));

    app.get('*',(req,res) => {
        res.sendFile(path.resolve(__dirname,'client','build','index.html'));
    });
}

const port = process.env.PORT || 5000;

app.listen(port,() => console.log(`Server started on port ${port}`));

解决方法

您似乎将 require/exports (CommonJs) 与 import/export (ES6) 语法混合在一起。通常,NodeJs 在解析模块时使用 require/exports。尝试使用一种一致的风格。你能不能改成这个,看看错误是否仍然存在:

first.js

const scheduleData = require('../models/schedule.js');

// Named exports
exports.getschedule = async (req,res) => {
    try {
        const allschedule= await scheduleData.find(); 

        res.status(200).json(allschedules); //Ok
    } catch (error) {
        res.status(404).json({message: error.message}) //Not Founnd
    }
}

exports.createschedules = async (req,res) => {
    ...
}

second.js

const {getSchedule} = require("./first.js");
const express = require("express");

const router = express.Router();
router.get("/",getSchedule);

module.exports = router;

third.js

const mongoose = require('mongoose'); 

const scheduleSchema = mongoose.Schema({
    Day: String,FirstP: String,SecondP: String,ThirdP: String,FourthP: String,FifthP: String,tutorial: {
        type: String,default: 'A'
    },}); 

// Default export
module.exports = mongoose.model('schedule',scheduleSchema);