nodemon,应用程序崩溃,在启动前等待文件更改



我正在尝试与node.js和mongodb做一个待办事项应用程序来存储用户输入到数据库的信息,但我不确定发生了什么。当我尝试运行nodemon时,我一直得到这个错误。我是node.js的新手,所以也许我错过了什么?下面的代码是server.js。

let express = require('express')
let mongodb = require('mongodb')
let app = express()
let db 
let connectionString = 'mongodb+srv://todoAppUser:Se@ttle1@cluster0.iod2u.mongodb.net/ToDoApp?retryWrites=true&w=majority'
mongodb.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, client){
db = client.db()
app.listen(3000)
})
app.use(express.urlencoded({extended: false}))
app.get('/', function(req, res) {
db.collection('items').find().toArray(function(err.items){
console.log('items')
})
res.send(`<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simple To-Do App</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1 class="display-4 text-center py-1">To-Do App</h1>

<div class="jumbotron p-3 shadow-sm">
<form action="/create-item" method="POST" >
<div class="d-flex align-items-center">
<input name="item" autofocus autocomplete="off" class="form-control mr-3" type="text" style="flex: 1;">
<button class="btn btn-primary">Add New Item</button>
</div>
</form>
</div>

<ul class="list-group pb-5">
<li class="list-group-item list-group-item-action d-flex align-items-center justify-content-between">
<span class="item-text">Fake example item #1</span>
<div>
<button class="edit-me btn btn-secondary btn-sm mr-1">Edit</button>
<button class="delete-me btn btn-danger btn-sm">Delete</button>
</div>
</li>
<li class="list-group-item list-group-item-action d-flex align-items-center justify-content-between">
<span class="item-text">Fake example item #2</span>
<div>
<button class="edit-me btn btn-secondary btn-sm mr-1">Edit</button>
<button class="delete-me btn btn-danger btn-sm">Delete</button>
</div>
</li>
<li class="list-group-item list-group-item-action d-flex align-items-center justify-content-between">
<span class="item-text">Fake example item #3</span>
<div>
<button class="edit-me btn btn-secondary btn-sm mr-1">Edit</button>
<button class="delete-me btn btn-danger btn-sm">Delete</button>
</div>
</li>
</ul>

</div>

</body>
</html>`)
})
app.post('/create-item', function(req, res){
db.collection('items').insertOne({text: req.body.item},
function(){
res.send("thanks for submitting the form")
})
})

这是包裹。其中nodemon文件为

{
"name": "todo-app",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"watch": "nodemon server",
"test": "echo "Error: no test specified" && exit 1",
"start": "node server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"mongodb": "^3.6.4",
"nodemon": "^2.0.7"
}
}

,这里是终端的错误。

npm run watch
> todo-app@1.0.0 watch C:UsersjasmiOneDriveDocumentstodo-app     
> nodemon server
[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
C:UsersjasmiOneDriveDocumentstodo-appserver.js:16
db.collection('items').find().toArray(function(err.items){
^
SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:979:16)
at Module._compile (internal/modules/cjs/loader.js:1027:27)       
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)  
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...  

C:UsersjasmiOneDriveDocumentstodo-appserver.js:16db.collection("项目");().toArray(函数(err.items) {

SyntaxError: Unexpected token '.'

这是你代码中的错误。你不能用'。'定义函数参数时。你还使用了err。项,但err没有在任何地方定义

在toArray函数中,有2个参数,第一个是错误(err),第二个是结果数组(项)。你必须替换掉。' with ','用逗号分隔参数。

下面是app.get中正确的代码片段:
db.collection('items').find().toArray(function(err,items){
if (err){
return err;
}
else{
console.log('items',items);
}
})

这样做,你就可以走了。

最新更新