【发布时间】:2022-06-29 20:56:26
【问题描述】:
一直在 api2 文件夹中执行 8.6,但出现此错误/错误然后我查看我的 server.js 并找到错误/错误然后我回到 api1 文件夹,这是 8.5 课程,我已经完成了 8.5 课程并且它通过保存到 json 文件并读取 json 文件来正确执行,但是由于某种原因,当我回到我的 api1 时会发生这种情况??
编码火车
8.5:使用 Node.js 将数据保存到 JSON 文件 - 使用文本编程
https://www.youtube.com/watch?v=4zr8j-jeU_M&list=PLRqwX-V7Uu6Yyn-fBtGHfN0_xCtBwUkBp&index=6
编码火车
8.6:API 前端客户端 - 使用文本编程
https://www.youtube.com/watch?v=4zr8j-jeU_M&list=PLRqwX-V7Uu6Yyn-fBtGHfN0_xCtBwUkBp&index=6
PS:我一直在用Safari和vscode
我认为错误/错误是从我使用 word 或 words 编写 fs.writefile 开始的,我不知道为什么会出现 >视频中的不同错误,但是当我通过添加 JSON.stringify 编写所有代码时,我做对了吗?所以我只是忽略了这个错误,因为我做对了并且代码运行得很好,所以我继续学习第 8.6 课,然后当我尝试从 8.6 编写代码时出现错误
或者我没有正确编码?我去了其他代码,发现了同样的错误,但没有出现
// This call back just tells us that the server has started
function listen() {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://' + host + ':' + port);
}
但在
// Callback
function showAll(req, res) {
// Send the entire dataset
// express automatically renders objects as JSON
res.send(words);
}
当我将鼠标指向 req 时,它得到了相同的错误/错误 'req' 已声明,但它的值永远不会被读取。ts(6133)
这是我获得源代码的网站
https://shiffman.net/a2z/server-node/
这是另一个代码
https://github.com/Programming-from-A-to-Z/A2Z-F16/blob/gh-pages/week4-node/06_save_JSON/server.js
//
这是我在项目“api1”文件夹中的错误/错误
var server = app.listen(3000, listening);
var server: 服务器
'server' 已声明,但其值从不读取。ts(6133)
//
这是我的文件和文件夹
api1 //文件夹
node_modules //express文件夹
package-lock.json //文件
package.json //文件
{
"scripts": {
"start": "node server.js"
},
"name": "project-pj",
"version": "0.0.1",
"dependencies": {
"express": "^4.18.1"
}
}
server.js //文件
var fs = require('fs');
var data = fs.readFileSync('words.json');
var words = JSON.parse(data);
console.log(words);
//console.log('server is starting');
var express = require('express');
var app = express();
var server = app.listen(3000, listening);
function listening () {
console.log("listening...");
}
app.use(express.static('website'));
app.get('/add/:word/:score?', addWord);
function addWord(request, response) {
var data = request.params;
var word = data.word;
var score = Number(data.score);
var reply;
if (!score) {
var reply = {
msg: "Score is required."
}
response.send(reply);
} else{
words[word] = score;
var data = JSON.stringify(words, null, 2);
fs.writeFile('words.json', data, finished);
function finished(err) {
console.log('all set.');
reply = {
word: word,
score: score,
status: "success"
}
response.send(reply);
}
}
}
app.get('/all', sendAll);
function sendAll(request, response) {
response.send(words);
}
app.get('/search/:word/', searchWord);
function searchWord(request, response) {
var word = request.params.word;
var reply;
if (words[word]) {
reply = {
status: "found",
word: word,
score: words[word]
}
} else {
reply = {
status: "not found",
word: word
}
}
response.send(reply);
}
网站//文件夹
index.html //文件
words.json //文件
{
"rainbow": 5,
"unicorn": 3,
"doom": -3,
"gloom": -2,
"purple": 3,
"pink": 6,
"flower": 7
}
【问题讨论】:
-
"'server' 已声明,但它的值从未被读取" - 这是真的,不是吗?请注意,您的大多数 sn-ps 实际上无法在浏览器环境中运行 - edit 您的问题是修复格式。
-
你在使用 ESLint 吗?如果是这样,它可能只是一个语法错误,ESLint 告诉你如果你不阅读它,定义
server是没有意义的。 -
那你能写代码吗?因为我是使用node.js的新手,我什至不知道我错过了什么我所知道的是第1步使用终端打开vscode,第2步编写代码,第3步使用终端启动服务器3000......在8.5的视频中
-
@Mastermind 我只是使用 ESlint,并没有解决我的错误stackoverflow.com/questions/72401985/…
-
如果你只是想解决问题:app.listen(3000, listener) 这是一个 linter 问题,它可能不会影响代码的结果。 linter 仅管理您的代码样式,并且可能不会对代码的结果产生太大影响(通常)
标签: javascript node.js api express server