Javascript 使用Express-Nodemon构建第一个平均堆栈应用程序时遇到问题

Javascript 使用Express-Nodemon构建第一个平均堆栈应用程序时遇到问题,javascript,node.js,mongodb,express,nodemon,Javascript,Node.js,Mongodb,Express,Nodemon,我正在学习Open教室课程,用Express构建我的第一个完整堆栈应用程序。在我开始优化app.js代码后,Nodemon应用程序崩溃。一旦我将所有的中间件移动到一个单独的文件中,Nodemon服务器就会继续崩溃 这是我的app.js代码 const express = require('express'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const app

我正在学习Open教室课程,用Express构建我的第一个完整堆栈应用程序。在我开始优化app.js代码后,Nodemon应用程序崩溃。一旦我将所有的中间件移动到一个单独的文件中,Nodemon服务器就会继续崩溃

这是我的app.js代码

const express = require('express');

const bodyParser = require('body-parser');

const mongoose = require('mongoose');

const app = express();

const stuffRoutes = require('./routes/stuff');

// Cross Origin Resource Sharing
app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
    next();
});

// Conection to MongoDB Atlas!
mongoose.connect('mongodb+srv://USERNAME:PASSWORD@cluster0-wns5r.mongodb.net/test?retryWrites=true&w=majority')
    .then(() => {
        console.log('Successfully connected to MongoDB Atlas!');
    })
    .catch((error) => {
        console.log('Unable to connect to MongoDB Atlas!');
        console.error(error);
    });




 // Body Parser for structuring schematic data for our DB
app.use(bodyParser.json());

app.use('/api/stuff', stuffRoutes);




module.exports = app;
这是我在StuffRoutes-/routes/stuff中的中间产品

const express = require('express');
const router = express.Router();



const Thing = require('../models/thing');

router.post('/', (req, res, next) => {
  const thing = new Thing({
    title: req.body.title,
    description: req.body.description,
    imageUrl: req.body.imageUrl,
    price: req.body.price,
    userId: req.body.userId
  });
  thing.save().then(
    () => {
      res.status(201).json({
        message: 'Post saved successfully!'
      });
    }
  ).catch(
    (error) => {
      res.status(400).json({
        error: error
      });
    }
  );
});

router.get('/:id', (req, res, next) => {
  Thing.findOne({
    _id: req.params.id
  }).then(
    (thing) => {
      res.status(200).json(thing);
    }
  ).catch(
    (error) => {
      res.status(404).json({
        error: error
      });
    }
  );
});

router.put('/:id', (req, res, next) => {
  const thing = new Thing({
    _id: req.params.id,
    title: req.body.title,
    description: req.body.description,
    imageUrl: req.body.imageUrl,
    price: req.body.price,
    userId: req.body.userId
  });
  Thing.updateOne({_id: req.params.id}, thing).then(
    () => {
      res.status(201).json({
        message: 'Thing updated successfully!'
      });
    }
  ).catch(
    (error) => {
      res.status(400).json({
        error: error
      });
    }
  );
});

router.delete('/:id', (req, res, next) => {
  Thing.deleteOne({_id: req.params.id}).then(
    () => {
      res.status(200).json({
        message: 'Deleted!'
      });
    }
  ).catch(
    (error) => {
      res.status(400).json({
        error: error
      });
    }
  );
});

router.get('/' +
  '', (req, res, next) => {
  Thing.find().then(
    (things) => {
      res.status(200).json(things);
    }
  ).catch(
    (error) => {
      res.status(400).json({
        error: error
      });
    }
  );
});



module.exports = router;

启动服务器时来自命令行的错误消息

[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
C:\Users\Agabus\WEB_Project\DevC\EN_5614116_go-full-stack-with-node-js-express-and-mongodb\Go-full-stack-MEAN\backender\routes\stuff.js:1
��c


SyntaxError: Invalid or unexpected token
    at Module._compile (internal/modules/cjs/loader.js:703:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (C:\Users\Agabus\WEB_Project\DevC\EN_5614116_go-full-stack-with-node-js-express-and-mongodb\Go-full-stack-MEAN\backender\app.js:9:21)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (C:\Users\Agabus\WEB_Project\DevC\EN_5614116_go-full-stack-with-node-js-express-and-mongodb\Go-full-stack-MEAN\backender\server.js:2:13)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
[nodemon] app crashed - waiting for file changes before starting...

[nodemon]由于更改而重新启动。。。
[nodemon]正在启动`node server.js`
C:\Users\Agabus\WEB\u Project\DevC\EN\u 5614116\u go-full-stack-with-node-js-express-and-mongodb\go-full stack MEAN\backender\routes\stuff.js:1
��C
SyntaxError:无效或意外的令牌
at模块编译(内部/modules/cjs/loader.js:703:23)
在Object.Module.\u extensions..js(internal/modules/cjs/loader.js:770:10)
在Module.load(内部/modules/cjs/loader.js:628:32)
at Function.Module._load(内部/modules/cjs/loader.js:555:12)
at Module.require(内部/modules/cjs/loader.js:666:19)
根据需要(内部/modules/cjs/helpers.js:16:16)
反对。(C:\Users\Agabus\WEB\u Project\DevC\EN\u 5614116\u go-full-stack-with-node-js-express-and-mongodb\go-full-stack-MEAN\backender\app.js:9:21)
at模块编译(内部/modules/cjs/loader.js:759:30)
在Object.Module.\u extensions..js(internal/modules/cjs/loader.js:770:10)
在Module.load(内部/modules/cjs/loader.js:628:32)
at Function.Module._load(内部/modules/cjs/loader.js:555:12)
at Module.require(内部/modules/cjs/loader.js:666:19)
根据需要(内部/modules/cjs/helpers.js:16:16)
反对。(C:\Users\Agabus\WEB\u Project\DevC\EN\u 5614116\u go-full-stack-with-node-js-express-and-mongodb\go-full-stack-MEAN\backender\server.js:2:13)
at模块编译(内部/modules/cjs/loader.js:759:30)
在Object.Module.\u extensions..js(internal/modules/cjs/loader.js:770:10)
[nodemon]应用程序崩溃-正在等待文件更改,然后再启动。。。

错误表明第
\routes\stuff.js:1行出现意外令牌��C您的
路由器中似乎也有错误。get
,what is
+'
我从
路由器中删除了
+'
。get
,但我仍然存在相同的问题。��c这就是命令行为我生成的
c:\Users\Agabus\WEB\u Project\DevC\EN\u 5614116\u go-full-stack-with-node-js-express-and-mongodb\go-full-stack-MEAN\backender\routes\stuff.js:1��c
您知道如何将该错误记录到
.log
.txt
文件中该错误表明问题出在
��c
因此,找出其原因是首要的。你的代码有错误吗?您是否使用像eslint这样的附加组件来检查语法错误?还可以尝试使用开发工具的调试功能,有时您会得到比控制台更多的细节。由于您使用的是mongoose,因此可以添加,
mongoose.set('debug',true)。此外,在您的日志中,
app.js:9:21)
server.js:2:13
从第一个错误指示的顶部开始,修复、重新运行并向下处理列表。一旦解决,错误将层叠并消失。