基于大神的一个已有node服务器(读者难以重现),体验使用Koa2的封装,封装写文件js.writeFile()方法。本文进行过程回顾。使用MacOS。
安装node、Koa2
node.js官网:https://nodejs.org/en/download/
升级npm: sudo npm install npm -g
安装n: npm install -g n
升级node.js版本: n stable
安装cnpm(非必需): npm install -g cnpm --registry=https://registry.npm.taobao.org
安装必需的程序包: npm install -g koa@next --save
等等。
安装好模块后,还需要配置环境变量:
1 配置环境变量 vi ~/.profile
2 加入一行 export NODE_PATH=/usr/local/lib/node_modules
因为安装时,用了-g
全局路径下安装,所以用/usr/local
2 让配置文件生效 source ~/.profile
备注:在Mac使用npm全局安装node_modules看到,应该是别人使用了bash,所以命令不同
开始封装
fs是node自带的模块
这里封装fs.writeFile()写文件的方法。该方法的参数要自行查看node文档。
fileRead.js 文件:
var fs = require("fs")
exports.writeFile = async function (filename, writeText) {
let data = await writeFileData(filename, writeText)
return data
}
function writeFileData(filename, writeText) {
return new Promise((resolve, reject) => {
fs.writeFile(filename, writeText, function (err) {
if(err){
console.log('出现错误!');
reject("error")
}else{
console.log('写文件结束');
resolve('ok')
}
});
});
}
testapi.js 文件:
//加载koa-router模块
var router = require('koa-router')();
const bodyParser = require('koa-bodyparser')
//加载fileRead.js
const fireControl = require('../util/fileRead')
router.use(bodyParser())
router.get('/writeTest', async(ctx)=>{
let url = ctx.url
let getData = await fireControl.writeFile("message.txt","1234");
console.log(getData)
ctx.body = getData
})
module.exports = router
index.js设置访问路径:
var router = require('koa-router')();
var serve = require("koa-static");
var views = require('koa-views')
var path = require('path')
var testapi = require('./testapi')//加载testapi.js
router.use(views(path.join(__dirname, '../view'), {
extension: 'ejs'
}))
console.log('__dirname = ' + __dirname);//会在命令行控制台输出index.js的路径
router.use(serve("*省略*/node/koa/static/html",{ extensions: ['html']}));
router.use('/admin/api',testapi.routes(),testapi.allowedMethods())
module.exports = router;
写完后,启动node服务器node main.js
比如main.js监听的是3000端口。
在浏览器输入localhost:3000/admin/api/writeTest
写入文件成功,则在页面显示ok
,不成功显示error