简单的node服务
# 实现思路
首先,一个服务,既要能本地调试,也需要能部署在服务器端,所以需要将 dev 和 prod 不一样的一些变量抽离出来,其他的文件和变量都是一样的,这样每次 全量 push 这些文件到服务器端即可;这里我的服务不一致的变量有
isProd:代表是否是生产环境,本地调试的时候可以用这个变量,封装一个 log 函数用来调试
connectionInfo: mysql 需要用到的连接服务器的配置,本地连接 target 地址肯定是 ip 地址,服务器直接用 localhost 即可,还有账户名之类的,服务器端可以用 root 账户
sshInfo:本地服务需要连接服务器的时候需要用到的 ssh 配置信息,服务器端不需要这个
node 最基本服务需要用到的包
express
body-parser
cors
本地服务直接执行
yarn add -D
即可,将这些包安装在前端项目里面服务器上则需要在服务的 js 文件所在的文件夹执行
npm init
命令,再手动修改生成的 package.json 文件,最后执行npm install
,配置服务所需要的环境
node 服务的启动
本地服务再 package.json 里面新增一条启动命令即可,例如
"sql": "node scripts/mysql.mjs"
,到时候本地直接执行yarn sql
就可以启动本地服务了服务器上不可能每次都到服务器上去执行
node mysql.mjs
命令,所以需要写一个 service 文件,用来启动这个服务,这里是我的实现先写了个 shell 脚本,里面配置一个命令
/root/.nvm/versions/node/v19.9.0/bin/node mysql.mjs
,在这个脚本里面去启动服务再写一个 service,在这个服务里面去启动这个 shell 脚本
服务里面设置启动命令
ExecStart=/bin/bash /etc/nginx/service/start.sh
设置自动重启
Restart=always
,重启间隔为 3 秒RestartSec=3
设置为开机自启
sudo systemctl enable myService.service
# 实现代码
点击 展开/收起 jsx 代码
// 服务文件示例
/**
* @des 连接数据库
*/
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import qrLoginRoute from './qrLoginRoute.mjs'; // 导入 二维码相关的 接口
// 使用 qrCodeRoutes
app.use('/mysql', qrLoginRoute);
/** ----------------------------------------------------开启服务监听---------------------------------------- */
app.listen(6005, () => {
console.log('\x1b[35m%s\x1b[0m', 'mysql server working...');
});
export default app;
// qrLoginRoute 服务示例
/**
* @des 二维码登录 相关接口
*/
import express from 'express';
const router = express.Router();
// 用户表查询
router.post(
'/getUserList',
authenticateAndAuthorize(10000),
async (req, res) => {
log(JSON.stringify(req.body));
const queryUserSql = `select * from ${DB_NAME}.user_table where user_type <> "superAdmin" `;
try {
const list = await runSql(queryUserSql);
res.send(list);
} catch (e) {
res.send({
error: '查询接口报错!',
});
}
},
);
export default router;