首页 > 编程语言 >nodejs 原生服务起一个httpServer

nodejs 原生服务起一个httpServer

时间:2024-05-15 17:33:41浏览次数:19  
标签:原生 __ httpServer const nodejs res http path import

离开express、koa、egg
你还会利用原生node写后端的http服务吗?

这里有一个例子,原生node起http服务。
返回了静态页面文件、字符串拼接的html,json对象和优化404。
做个备忘吧!

import { createServer } from "http";
import path from 'path';
import { __dirname } from './utils/index.js'

const httpServer = createServer((req, res) => { // 创建一个http服务
    const { url } = req;
    if (url === '/') { // 返回现有的静态页面
        const file = path.join(__dirname, '../views/index.html');
        const data = readFileSync(file);
        res.end(data);
    } else if (url === '/test') { // 返回手写的html
        res.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' })
        res.write('<h1>你好,这是你人生中创建的第一个服务器</h1>');
        res.end('<h1>响应结束!!!</h1>');  // 响应结束
    } else if (url === '/json') { // 返回json
        res.writeHead(200, 'OK', { 'Content-type': 'application/json' });
        res.end(JSON.stringify({
            msg: '你好啊'
        }));
    } else { // 自定义404
        es.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' })
        res.end('<h1>你来到了一片荒无人烟之处!</h1>');
    }
});
httpServer.listen(3000, () => { console.log('服务已经启动: http://127.0.0.1:3000'); }); // 启动http服务

因为__dirname 是commonjs规范内置的变量,当package.json的"type":"module"时,便无法找到。
不过有补救的办法

import { fileURLToPath } from 'url'
import path from 'path';
import os from 'os'

const __filenameNew = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filenameNew);

标签:原生,__,httpServer,const,nodejs,res,http,path,import
From: https://www.cnblogs.com/dingshaohua/p/18194342

相关文章

  • NodeJS
    1、node、npm安装及使用NPM(NodePackageManager)是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:1)允许用户从NPM服务器下载别人编写的第三方包到本地使用。2)允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。3)允许......
  • 云原生周刊:Kubernetes Grafana 看板更新 | 2024.5.13
    开源项目推荐ChartTestingChartTesting是用于测试Helm图表的工具。它旨在用于对拉取请求进行lint和测试。它会自动检测针对目标分支更改的图表。ClusterpediaClusterpedia是一个多集群的百科全书,用于同步、搜索和简单控制多集群资源。Clusterpedia可以与多个集群同......
  • 浅谈Vue.js与原生开发
    在现代的Web开发中,前端框架的选择是至关重要的。Vue.js作为一款流行的前端框架,与传统的原生开发相比,有许多明显的区别。模版语法与HTMLVue.js使用特殊的模板语法来创建动态视图,这样开发者可以更方便地表达复杂的逻辑。通过指令(例如v-if、v-for等)和模板表达式,Vue.js简化了数据的......
  • 使用nodejs创建返回xml的web server
    //ImportNode.jscoremodulei.ehttpconsthttp=require('http');constfs=require('fs').promises;consthost='localhost';constport=8000;constrssFileName="/news.rss";//Createwebserverconstserve......
  • 华为云发布CodeArts IDE for Python,极致优雅云原生开发体验
    近日,华为云正式发布CodeArtsIDEforPython,这是一款内置华为自主创新的Python语言服务,提供智能编程、灵活调试能力的可扩展桌面开发工具,为华为云开发者提供卓越Python编码体验。Python作为一种编程语言,广泛用于Web应用程序、软件开发、数据科学和机器学习(ML)。Python以其优......
  • Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\no
     #参考:https://stackoverflow.com/questions/69541725/error-cannot-find-module-c-program-files-nodejs-node-modules-npm-bin-node-mod --- #问题描述在一直倒腾重新安装nodejs时报的一个这样的错,记录一下 在执行npm-v时报了如标题的错,见下图 --- #原因......
  • OSX上管理多个版本的Nodejs,并且随意切换
    Nodejs的项目经常Node自身的版本不同而无法运行,如果每次都选择卸载掉一个版本的Nodejs再安装另外一个版本的Nodejs,会很费劲,通过如下命令切换。例如:#Forexample#Installmainnodeversion18$brewinstallnode@18#Addthemainversionto~/.zshrctomakestarte......
  • Error: Cannot find module ‘D:\SoftSetupLoaction\nodejs\node_global\node_mod
    Error:Cannotfindmodule‘D:\SoftSetupLoaction\nodejs\node_global\node_modules\npm\bin\npm-cli.js‘  出现原因:重新安装可装了nodejs和npm网上查了很多方法,都建议重装,但是都没有效果(因为我就是重装之后出现的问题)按照错误提示node_global找不到npm-cli.js,个......
  • NodeJS路径遍历:示例及预防
    让我们来看看什么是路径遍历攻击,以及在Node.js中可以采用哪些方法来阻止这种攻击。构建一个安全而健壮的应用程序需要考虑的因素很多,并非一件容易的事情。要确保覆盖所有潜在的漏洞是一项十分艰巨的任务,这需要大量的经验和指导。在这些漏洞中,有一个和系统目录访问安全相......
  • 华为云开发者桌面全新发布CodeArts IDE for Python,极致优雅云原生开发体验
    本文分享自华为云社区《华为云发布CodeArtsIDEforPython,极致优雅云原生开发体验》,作者:华为云头条。近日,华为云正式发布CodeArtsIDEforPython,这是一款内置华为自主创新的Python语言服务,提供智能编程、灵活调试能力的可扩展桌面开发工具,为华为云开发者提供卓越Python编码体验......