node.js启动服务,不依赖第三方

log文件是自动生成的
index.js文件
const url = require('url');
const http = require('http');
const fs = require('fs');
const { Console } = require('console'); let hostname = '127.0.0.1';
let port = 8080; var curURL = '' // 读取文件,处理编码问题
function readText (pathname) {
let bin = fs.readFileSync(pathname)
if (bin[0] === 0xEF && bin[1] === 0xBB && bin[2] === 0xBF) {
bin = bin.slice(3)
}
return bin.toString('utf-8')
} // 获取当前的时间
function getCurrentDate () {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth()+1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
let curDate = year + '年' + month + '月' + day + '日 ' + hour + ':' + minute + ':' + second;
return curDate
} // 创建 HTTP 隧道代理
const server = http.createServer((req, res) => {
var pathname = url.parse(req.url).pathname;
// 过滤掉favicon的请求,不然log里面会有这个url
if(pathname !== '/favicon.ico'){
curURL = `http://${hostname}:${port}${req.url}`
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.writeHead(200, { 'Content-Type': 'application/json' });
console.log(readText('./user.json'))
res.end(readText('./user.json'))
getLog()
}
}); // 打印日志模块
function getLog () {
let options = {
encoding: 'utf-8',
flags: 'w'
}
// 判断文件是否存在
if (fs.existsSync('./Log.log')) {
options.flags = 'r'
} const output = fs.createWriteStream('./Log.log', options);
const errorOutput = fs.createWriteStream('./Log.log',options);
const logger = new Console({ stdout: output, stderr: errorOutput });
// 获取当前的时间
let curDate = getCurrentDate ()
let logs = `[${curDate}]=====URL路径:${curURL}\n`
console.log(logs)
// 将新的内容写入日志,并且不删除原来的
fs.appendFile('./Log.log',logs,'utf8',function(err, ret) {
if(err) {
throw err
}
})
logger.log(logs);
} server.listen(port, hostname, () => {
console.log(`服务运行在 http://${hostname}:${port}/`);
});
user.json 文件
1 {
"name": "白晶晶(醉盏)",
"attr": "这是一个很懒的小仙女",
"server": "Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效"
}
打印结果:
网页输入地址:http://localhost:8080
node.js启动服务,不依赖第三方的更多相关文章
- Node.js启动服务报错SyntaxError: Unexpected token import
启动服务报错如下: Last login: Wed Nov :: on ttys000 localhost:~ sipeng$ cd /Users/sipeng/Desktop/彭思/2017年学习/ ...
- 个推Node.js 微服务实践:基于容器的一站式命令行工具链
作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 1. 每次新建项目都需要安装一次依赖,这些依赖之 ...
- 利用OpenShift托管Node.js Web服务进行微信公众号开发
最近写了一个微信的翻译机器人.用户只要关注该公众号,发送英文的消息,就能收到中文翻译的回复.有兴趣的读者可以扫描下面的二维码关注该公众号,尝试发送英文单词试试看.(有时候第一次发送单词会收到“该公众号 ...
- node.js启动调试方式
node.js启动调试方式(nodeJs不能像js一样在控制台调试) 以express项目为例,启动路径是localhost:3000 一.通过node命令启动 node server/bin/www ...
- 用node.js启动mock.js
Node.js Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言.官网下载n ...
- node安装启动服务
一.下载安装包: node下载地址:https://nodejs.org/en/download/,根据自己电脑的配置下载相应的windows64位安装包,下载完成后,进行安装.下面我用的8.9.0版 ...
- Serverless Web Function 实践教程(一):快速部署 Node.js Web 服务
作为目前广受欢迎的 Web 服务开发语言,Node.js 提供了众多支持 HTTP 场景的相关功能,可以说是为 Web 构建而生.因此,基于 Node.js,也诞生了多种 Web 服务框架,它们对 N ...
- Node.js微服务实践(一)
什么是微服务 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.在所有情况下 ...
- Node.js建立服务、路径处理与响应
通过Node.js创建一个web服务器,要写的代码可能不是最少的,但是一定是最容易理解的. 用6行代码创建的web服务器 当在浏览器中访问http://127.0.0.1:1337会看到自定义的字样 ...
随机推荐
- Xshell 6 安装注册说明
1.下载 官方下载到的版本在进行安装的时候,是有序列号输入框的如下图,但是好像我们从那个所谓的官网上下载的却没有,只能下载到一点击注册就跳转到一个网站的那种版本. 像上面这种版本如何下载呢? 我们去官 ...
- centos下kill、killall、pkill命令区别
kill是用来终止进程的 首先可以通过ps aux查看系统有哪些进程正在运行. 1.用kill来杀死某一个进程 #kill,加选项-9,加PID,表示杀死进程编号为PID的这个进程# -1 重启#ki ...
- C#编程 JSON操作
JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析.JSON跟XML一样是一种是数据格式. JSON 使用 JavaScript 语法来描述数据对象,但是 ...
- 【LeetCode】15、三数之和为0
题目等级:3Sum(Medium) 题目描述: Given an array nums of n integers, are there elements a, b, c in nums such t ...
- Ubuntu18.04两步纯小白傻瓜无脑式安装Caffe
前言 Ubuntu16安装caffe过于繁琐,然而Ubuntu18安装起来却仅仅两步而已 附上官方安装教程:http://caffe.berkeleyvision.org/install_apt.ht ...
- 网页设计——HTML(3)布局基础
为什么要布局? 网页布局,也就是如何安排网页的内容. 一个好的网页布局能够使人眼前一亮,吸引流量. 本篇文章中我们不讨论相关的设计理论,我们只对布局所用到的HTML知识进行学习. 几种简单的布局方式 ...
- 基于Keras的OpenAI-gym强化学习的车杆/FlappyBird游戏
强化学习 课程:Q-Learning强化学习(李宏毅).深度强化学习 强化学习是一种允许你创造能从环境中交互学习的AI Agent的机器学习算法,其通过试错来学习.如上图所示,大脑代表AI Agent ...
- java 如何编写多线程的代码
线程是干活的所以线程一定是Thread,或者改线程实现Runnable接口多线程是竞争关系,所以多个线程竞争同一个资源,也就是同一个对象所以这个竞争对象发到Thread中即: // resources ...
- py2 json字符串转字典去掉前缀u
def unicode_convert(input): if isinstance(input, dict): return {unicode_convert(key): unicode_conver ...
- java.util.MissingFormatArgumentException: Format specifier '%s'
java.util.MissingFormatArgumentException: Format specifier '%s' at java.util.Formatter.format(Format ...