在windows上用nodejs搭建一个静态文件服务器,即使你一点基础没有也能学会nodejs静态文件服务器的搭建,本文介绍的非常详细,很适合零基础入门的朋友学习。
首先安装nodejs:
•新建一个node文件夹
•下载node.exe到该文件夹
•下载npm然后解压到该文件夹
•现在node文件夹是这样的
•把该目录加入到path环境变量
•在命令行执行
node -v npm -v
如果得到了版本号则表示nodejs安装完成
•在命令行中执行
npm config set registry https://registry.npm.taobao.org
以后安装nodejs模块 都会从淘宝的npm镜像中下载
•如果想要发布自己的模块到npm要先把npm的registry切换回来
npm config set registry https://registry.npmjs.org
接下来搭建静态文件服务器
•创建一个文件夹server,一个文件夹root,server内是服务器的js代码,root是根目录
•server文件夹里面创建js文件 index.js mime.js server.js
•index.js
var server = require('./server.js'); var rootpath = 'root'; var sv = server.create({ port: '9587', host: '127.0.0.1', root: rootpath }); •mime.js var types = { "css": "text/css", "less": "text/css", "gif": "image/gif", "html": "text/html", "ejs": "text/html", "ico": "image/x-icon", "jpeg": "image/jpeg", "jpg": "image/jpeg", "js": "text/javascript", "json": "application/json", "pdf": "application/pdf", "png": "image/png", "svg": "image/svg+xml", "swf": "application/x-shockwave-flash", "tiff": "image/tiff", "txt": "text/plain", "wav": "audio/x-wav", "wma": "audio/x-ms-wma", "wmv": "video/x-ms-wmv", "xml": "text/xml", "default": "text/plain" }; module.exports = function (ext) { return types[ext] || 'text/plain' }
•server.js
var http = require('http'); var path = require('path'); var fs = require('fs'); var url = require("url"); var mime = require('./mime.js'); function getPromise(cbk) { return (new Promise(cbk)); } exports.create = function (opts) { var root = opts.root; var sv = http.createServer(); function request(request, response) { var pathname = decodeURIComponent(url.parse(request.url).pathname); var realPath = path.resolve(path.join(root, pathname));//请求的实际路径 getPromise(function (resolve, reject) { fs.exists(realPath, function (isExists) {//判断路径是否存在 isExists ? resolve() : reject(); }); }).catch(function () { resWrite(response, '404', 'html', '<h1>404</h1>file or dir : <h3>' + pathname + '</h3>not found'); }).then(function () { return getPromise(function (resolve, reject) { fs.stat(realPath, function (err, stat) {//判断路径是文件还是文件夹 if (err) { reject(err); } else { resolve(stat); } }) }).then(function (stat) { if (stat.isFile()) {//路径对应的是一个文件 resFile(response, realPath); } else if (stat.isDirectory()) {//路径对应的是一个文件夹 var defaultIndexPath = path.resolve(realPath, 'index.html'); return getPromise(function (resolve, reject) { fs.exists(defaultIndexPath, function (isExists) { if (isExists) {//如果该文件夹内有index.html resolve(true); } else {//该文件夹内没有index.html 则 显示该文件夹的内容列表 resolve(false); } }) }).then(function (isExistsIndex) { if (isExistsIndex) { resFile(response, defaultIndexPath); } else { return getPromise(function (resolve, reject) { fs.readdir(realPath, function (err, list) { if (err) { reject(err); } else { resolve(list); } }) }).then(function (list) { var pmlist = list.map(function (item) { return (new Promise(function (resolve, reject) { fs.stat(path.resolve(realPath, item), function (err, stat) { if (err) { console.error(err); resolve(''); } else if (stat.isFile()) { resolve(`<li class="file"><a href="${item}">${item}</a></li>`); } else if (stat.isDirectory()) { resolve(`<li class="dir"><a href="${item}/">${item}</a></li>`); } else { resolve(''); } }) })); }); Promise.all(pmlist).then(function (linkList) { var links = '<ul>'; links += '<li class="dir"><a href="../">../</a></li>'; links += linkList.join(''); links += '</ul>'; var dirPage = ` <!doctype html> <html> <head> <meta charset="utf-8"/> <style> a{color:blue;text-decoration: none;} .dir a{color:orange} </style> </head> <body> ${links} </body> </html> `; resWrite(response, '200', 'html', dirPage); }); }).catch(function (err) { resWrite(response, '500', 'default', err.toString()); }) } }) } else {//既不是文件也不是文件夹 resWrite(response, '404', 'html', '<h1>404</h1>file or dir : <h3>' + pathname + '</h3>not found'); } }).catch(function (err) { resWrite(response, '500', 'default', err.toString()); }) }) } sv.on('request', request); sv.listen(opts.port, opts.host); return sv; }; function resFile(response, realPath) {//输出一个文件 fs.readFile(realPath, function (err, data) { if (err) { resWrite(response, '500', 'default', err.toString()); } else { var ext = path.extname(realPath).toLocaleLowerCase(); ext = (ext ? ext.slice(1) : 'unknown'); resWrite(response, '200', ext, data); } }); } function resWrite(response, statusCode, mimeKey, data) { response.writeHead(statusCode, {'Content-Type': mime(mimeKey)}); response.end(data); }
•在server文件夹内按住shift按钮,鼠标右键点击文件夹内空白区域,点击在此处打开命令窗口,执行命令
node index.js
以上所述是小编给大家介绍的在windows上用nodejs搭建静态文件服务器的简单方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍用nodejs搭建websocket服务器,包括了用nodejs搭建websocket服务器的使用技巧和注意事项,需要的朋友参考一下 简单开始 1.安装node。https://nodejs.org/en/ 2.安装ws模块 ws:是nodejs的一个WebSocket库,可以用来创建服务。 https://github.com/websockets/ws 3.server.js
问题内容: 我正在尝试在nodejs中创建静态文件服务器,而不是将其作为完美的服务器,这更多是为了理解节点。我非常了解Connect和node- static之类的项目,并且完全打算将这些库用于更多可用于生产的代码,但我也想了解我正在使用的基础知识。考虑到这一点,我编写了一个小的server.js: 我的问题是双重的 这是在节点中创建和流式传输基本html等的“正确”方法,还是有更好/更优雅/更可
本文向大家介绍使用nodejs、Python写的一个简易HTTP静态文件服务器,包括了使用nodejs、Python写的一个简易HTTP静态文件服务器的使用技巧和注意事项,需要的朋友参考一下 日常开发过程中,我们经常需要修改一些放在 CDN 上的静态文件(如 JavaScript、CSS、HTML 文件等),这个过程中,我们希望能有一种方式将线上 CDN 的目录映射为本地硬盘上的某个目录,这样,当
本文向大家介绍nodejs 搭建简易服务器的图文教程(推荐),包括了nodejs 搭建简易服务器的图文教程(推荐)的使用技巧和注意事项,需要的朋友参考一下 www文件夹下 template文件夹下 server.js代码: index.ejs代码: 以上这篇nodejs 搭建简易服务器的图文教程(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍iPhone手机上搭建nodejs服务器步骤方法,包括了iPhone手机上搭建nodejs服务器步骤方法的使用技巧和注意事项,需要的朋友参考一下 一、为在ios上面运行,编译jxcore 如果出现import which的module not found问题, 那就通过下面语句安装python的which 如果出现别的问题,可以参看jxcore编译ios的前提条件,采取相应措施。 h
错误:在object.exports._errnoException(util.js:1018:11)在exports._exceptionwithhostport(util.js:1041:20)在server._listen2(net.js:1245:19)在server.listen(net.js:1294:10)在eventemitter.listen(net.js:1390:5)在obj