Javascript 使用Express-Nodemon构建第一个平均堆栈应用程序时遇到问题
我正在学习Open教室课程,用Express构建我的第一个完整堆栈应用程序。在我开始优化app.js代码后,Nodemon应用程序崩溃。一旦我将所有的中间件移动到一个单独的文件中,Nodemon服务器就会继续崩溃 这是我的app.js代码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
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
从第一个错误指示的顶部开始,修复、重新运行并向下处理列表。一旦解决,错误将层叠并消失。