一段很简单的 Node.js 代码,可是 Chrome 出现了反常现象
一段很简单的 Node.js 代码,可是 Chrome 出现了反常现象
// happy coding :)
var connect = require(‘connect’);
var session = require(‘express-session’);
var app = connect()
.use(session({ secret: ‘keyboard cat’ }))
.use(function(req, res, next){
var sess = req.session;
if (sess.views) {
sess.views++;
res.setHeader(‘Content-Type’, ‘text/html’);
res.write(’<p>views: ’ + sess.views + ‘</p>’);
res.end();
} else {
sess.views = 1;
res.end(‘Welcome to the session demo. Refresh!’);
}
})
.listen(3000);
就是想测试一下 express-session 这个模块,用的是官方文档的例子,用 Edge 和 Firefox 浏览器测试是正常的,输出 1 , 2 , 3 views 这样增长;可是 Chrome 浏览器( Winidows 10 , v52 )却是这样增长的: 1 , 3 , 5 , 7... views 。 禁用掉所有 Chrome 插件测试还是一样。求解惑,谢谢。
有可能是多请求了 favicon ,在代码里打印下请求 url 就知道了。
嗯,是的! Chrome 每次请求会附带一次 /favicon.ico 的请求, Edge 和 Firefox 则没有。谢谢!
Firefox 也会请求的,不过一般只是刚打开页面时请求一次
针对您提到的 Node.js 代码在 Chrome 中出现反常现象的问题,首先需要明确的是,Node.js 和 Chrome 虽然都基于 V8 引擎,但它们的运行环境和用途截然不同。Node.js 是服务器端运行环境,而 Chrome 是浏览器,用于前端页面展示和交互。因此,直接在 Chrome 中运行 Node.js 代码通常会导致错误或异常行为。
假设您的 Node.js 代码非常简单,如下所示:
const http = require('http');
http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
}).listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});
这段代码在 Node.js 环境下会启动一个 HTTP 服务器,但在 Chrome 中直接运行会因为缺少 require
函数等 Node.js 特有的全局变量而失败。
如果您想在浏览器中测试类似的功能,应使用前端技术栈,如 Fetch API 来发起 HTTP 请求,或使用 WebSockets 进行实时通信。以下是一个使用 Fetch API 的简单示例:
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
此代码在 Chrome 控制台中可以正常运行,因为它使用了浏览器支持的 API。如果您的 Node.js 代码确实需要在浏览器中运行,请考虑将其重构为适合前端的技术实现。