nodejs后段示例

www.charleen.top网站的后端server.js

www.charleen.top

const express = require("express");
const child_process = require('child_process');
const fs = require("fs");
const path = require("path");
const app = express();
const port = 3000;

const { exec } = require('child_process');

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 静态文件目录
app.use(express.static("/www/wwwroot"));

// 默认跳转到index.html
app.get("/", function(req, res) {
  res.redirect("/index.html");
});

// 处理allword.txt文件请求
app.get("/allword.txt", function(req, res) {
  fs.readFile("/www/wwwroot/allword.txt", "utf8", function(err, data) {
    if (err) {
      console.error(err);
      res.status(500).send("读取文件失败");
    } else {
      res.send(data);
    }
  });
});
// 处理unknow.txt文件请求
app.get("/unknow.txt", function(req, res) {
         console.log("+++");
  fs.readFile("/www/wwwroot/unknow.txt", "utf8", function(err, data) {
    if (err) {
      console.error(err);
      res.status(500).send("读取文件失败");
    } else {
      res.send(data);
    }
  });
});
// 处理不认识按钮点击请求
app.post("/unknow", function(req, res) {
  const unknownLine = req.body.line;
  fs.appendFile("/www/wwwroot/unknow.txt", unknownLine + "\n", function(err) {
    if (err) {
      console.error(err);
      res.status(500).send("写入文件失败");
    } else {
         console.log("yes");
      res.sendStatus(200);
    }
  });
});


// 下一个按钮路由
app.get('/next', (req, res) => {
  const index = parseInt(req.query.index);
  if (index < lines.length - 1) {
    res.send(lines[index + 1]);
  } else {
    res.send("已经没有了");
  }
});

// 上一个按钮路由
app.get('/previous', (req, res) => {
  const index = parseInt(req.query.index);
  if (index > 0) {
    res.send(lines[index - 1]);
  } else {
    res.send("已经没有了");
  }
});


// 定义一个数组来存储文件中的每一行数据
let lines = [];

// 读取文件并获取lines
fs.readFile(path.join(__dirname, 'unknow.txt'), 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  // 将数据按换行符分割成行数组
  const lines = data.split('\n');
  // 设置Express路由
  app.get('/remove', (req, res) => {
    console.log("+++\n");
    const index = parseInt(req.query.index);
    console.log(index+"index");
    console.log(lines.length+"lines.length");
    if (index >= 0 && index < lines.length) {
      lines.splice(index, 1);
      fs.writeFile(path.join(__dirname, 'unknow.txt'), lines.join('\n'), 'utf8', (err) => {
        if (err) {
          console.error(err);
          res.send("删除失败1");    console.log("删除失败1");
        } else {
          res.send("删除成功");    
        }
      });
    } else {
      res.send("index非法");    console.log("index非法");
    }
  });
});

 


// 处理/api/data1的GET请求,返回allword.txt文件的内容
app.get('/allwordchange', (req, res) => {
    
         console.log("进入啦!!!");
  const filePath = path.join(__dirname, '/allword.txt');
  fs.readFile(filePath, 'utf8', (err, data) => {
    if (err) {
      console.error(err);
      res.status(500).send('Error reading allword.txt');
    } else {
      res.send(data);
    }
    
  });
});

// 处理/api/data1的POST请求,将请求体中的数据写入allword.txt文件
app.post('/allwordchange', (req, res) => {
  const filePath = path.join(__dirname, '/allword.txt');
  const newData = req.body.data;
  fs.writeFile(filePath, newData, 'utf8', (err) => {
    if (err) {
      console.error(err);
      res.status(500).send('Error writing to allword.txt');
    } else {
      res.send('Data written to data1.txt');
    }
  });
});

// 处理/api/data2的GET请求,返回unknow.txt文件的内容
app.get('/unknowchange', (req, res) => {
  const filePath = path.join(__dirname, '/unknow.txt');
  fs.readFile(filePath, 'utf8', (err, data) => {
    if (err) {
      console.error(err);
      res.status(500).send('Error reading unknow.txt');
    } else {
      res.send(data);
    }
  });
});

// 处理/api/data2的POST请求,将请求体中的数据写入unknow.txt文件
app.post('/unknowchange', (req, res) => {
  const filePath = path.join(__dirname, '/unknow.txt');
  const newData = req.body.data;
  fs.writeFile(filePath, newData, 'utf8', (err) => {
    if (err) {
      console.error(err);
      res.status(500).send('Error writing to unknow.txt');
    } else {
      res.send('Data written to unknow.txt');
    }
  });
});

 

 


// 定义分割行内容的函数
const splitContent = (line, set) => {
  return {
    front: line.substring(0, set - 1),
    back: line.substring(set - 1)
  };
};

// 定义处理文件的函数
const separate = (req, res) => {
  // 读取文件路径
  const filePath = `/www/wwwroot/allword.txt`;

  // 读取文件内容
  fs.readFile(filePath, { encoding: 'utf8' }, (err, data) => {
    if (err) {
      console.error('读取文件时出错', err);
      return res.status(500).send('内部服务器错误');
    }


var zj = "nih,a-o:";
zj = zj.replace(/,/g, "b");
console.log(zj); // 输出:nihba-o:

 

    // 删除所有符号
    
    console.log('删除符号完毕');
  
 const cleanedData= data.replace(/\:/g, '').replace(/\(/g,"").replace(/\)/g,"").replace(/\-/g,"").replace(/\;/g,"").replace(/\:/g,"");
   console.log(cleanedData);
    // 创建字符数组
    const all = [];

    // 按行读取并处理内容
    cleanedData.split('\n').forEach((line) => {
//        console.log(line +"这一行?");
      let set = 0;
       const minn=[];
      for (let i = 0; i < line.length; i++) {
  //    console.log("第"+i+"个字符"+line[i]+":"+/\u4e00-\u9fa5/.test(line[i])+"##");
        if (/[\u4e00-\u9fa5]/.test(line[i])) {
          set = i + 1;
//          console.log("找到第一个汉字"+"位于"+set+"$");
          minn.push(set);
        }
      }
      if(minn==false){
          minn[0]=0;
      }
//console.log(minn+"$$");
set=minn[0];
//console.log("set :"+set+"#s");
      if (set > 0) {
        const { front, back } = splitContent(line, set);
      //  console.log(set+"$");
    //    console.log(front+"&"+back);
        all.push(front);
        all.push(back);
      } else {
        all.push(line);
  //      console.log(line+"@");
      }
    });
//    console.log('写入all完毕');
    for(let i=0;i<8;i++){
//        console.log(all[i]+",");
    }
    

    // 清空文件内容
    fs.truncate(filePath, (err) => {
      if (err) {
        console.error('清空文件时出错', err);
        return res.status(500).send('内部服务器错误');
      }

      // 写入处理后的内容
      fs.writeFile(filePath, all.join('\n'), { encoding: 'utf-8' }, (err) => {
        if (err) {
          console.error('写入文件时出错', err);
          return res.status(500).send('内部服务器错误');
        }

        console.log('分离完毕');
        res.send('处理完成');
      });
    });
  });
};

// 创建路由并使用处理文件的函数
app.get('/separate', separate);

 


// 定义处理文件的函数
const separate2 = (req, res) => {
  // 读取文件路径
  const filePath = `/www/wwwroot/unknow.txt`;

  // 读取文件内容
  fs.readFile(filePath, { encoding: 'utf8' }, (err, data) => {
    if (err) {
      console.error('读取文件时出错', err);
      return res.status(500).send('内部服务器错误');
    }


    // 删除所有符号
    
    console.log('删除符号完毕');
  
  
 const cleanedData= data.replace(/\:/g, '').replace(/\(/g,"").replace(/\)/g,"").replace(/\-/g,"").replace(/\;/g,"").replace(/\:/g);
    // 创建字符数组
    const all = [];

    // 按行读取并处理内容
    cleanedData.split('\n').forEach((line) => {
 //       console.log(line +"这一行?");
      let set = 0;
       const minn=[];
      for (let i = 0; i < line.length; i++) {
   //   console.log("第"+i+"个字符"+line[i]+":"+/\u4e00-\u9fa5/.test(line[i])+"##");
        if (/[\u4e00-\u9fa5]/.test(line[i])) {
          set = i + 1;
     //     console.log("找到第一个汉字"+"位于"+set+"$");
          minn.push(set);
        }
      }
      if(minn==false){
          minn[0]=0;
      }
//console.log(minn+"$$");
set=minn[0];
//console.log("set :"+set+"#s");
      if (set > 0) {
        const { front, back } = splitContent(line, set);
 //       console.log(set+"$");
   //     console.log(front+"&"+back);
        all.push(front);
        all.push(back);
      } else {
        all.push(line);
 //       console.log(line+"@");
      }
    });
//    console.log('写入all完毕');
    for(let i=0;i<8;i++){
//        console.log(all[i]+",");
    }
    

    // 清空文件内容
    fs.truncate(filePath, (err) => {
      if (err) {
        console.error('清空文件时出错', err);
        return res.status(500).send('内部服务器错误');
      }

      // 写入处理后的内容
      fs.writeFile(filePath, all.join('\n'), { encoding: 'utf-8' }, (err) => {
        if (err) {
          console.error('写入文件时出错', err);
          return res.status(500).send('内部服务器错误');
        }

        console.log('分离完毕');
        res.send('处理完成');
      });
    });
  });
};

 

// 添加一个路由到 deleteChinese 函数
app.get('/separate2', separate2);


// // 添加一个路由到 deleteData 函数
 //app.get('/deletevacc', deletevacc);

// 定义 deletevacc 路由
app.get('/deletevacc', (req, res) => {
    console.log("删除空行进入程序");
  // 读取文件
  fs.readFile(path.join('/www/wwwroot/allword.txt'), 'utf8', (err, data) => {
    if (err) {
      console.error('读取文件时出错:', err);
      return res.status(500).send('服务器内部错误');
    }
    // 删除空行
    const lines = data.split('\n').filter(line => line.trim() !== '');
    const newData = lines.join('\n');
    // 写回文件
    fs.writeFile(path.join('/www/wwwroot/allword.txt'), newData, 'utf8', (err) => {
      if (err) {
        console.error('写入文件时出错:', err);
        return res.status(500).send('服务器内部错误');
      }
        console.log('文件中的空行已删除');
        res.send('空行已删除');
    });
  });
});


app.get('/deletevacc2', (req, res) => {
    console.log("删除空行进入程序");
  // 读取文件
  fs.readFile(path.join('/www/wwwroot/unknow.txt'), 'utf8', (err, data) => {
    if (err) {
      console.error('读取文件时出错:', err);
      return res.status(500).send('服务器内部错误');
    }
    // 删除空行
    const lines = data.split('\n').filter(line => line.trim() !== '');
    const newData = lines.join('\n');
    // 写回文件
    fs.writeFile(path.join('/www/wwwroot/unknow.txt'), newData, 'utf8', (err) => {
      if (err) {
        console.error('写入文件时出错:', err);
        return res.status(500).send('服务器内部错误');
      }
        console.log('文件中的空行已删除');
        res.send('空行已删除');
    });
  });
});

 

// 写入code.cppt文件
app.post('/codewrite', (req, res) => {
  const filePath = path.join(__dirname, '/code.cpp');
  const newData = req.body.data;
  fs.writeFile(filePath, newData, 'utf8', (err) => {
    if (err) {
      console.error(err);
      res.status(500).send('Error writing to code.cpp');
    } else {
      res.send('Data written to code.cpp');
    }
  });
});

 

 

 

app.post('/compile', (req, res) => {
    console.log("sss");
    const code = req.body.code;
    // 编译并运行C++代码
        const output = child_process.execSync(`g++ -o output /www/wwwroot/code.cpp && ./output`, {
            stdio: ['pipe', 'pipe', 'pipe'],
            shell: true,
            env: process.env
        });
        // 将输出结果发送给前端
        res.send(output.toString());
    
});


//下面这个要改


// app.post('/compile', (req, res) => {
//   // 读取C++代码
//   fs.readFile('/www/wwwroot/code.cpp', (err, codeCpp) => {
//     if (err) {
//       console.error('Error reading code.cpp:', err);
//       return res.status(500).send('Error reading file');
//     }
//     // 构造C++代码和输入内容的命令
//     const input = "122";
//     const command = `g++ -o code /www/wwwroot/code.cpp && ./code ${input}`;
//     // 执行命令并获取输出结果
//     child_process.exec(command, (err, stdout, stderr) => {
//       if (err) {
//         console.error('Error executing command:', err);
//         return res.status(500).send('Error executing command');
//       }
//       // 打印输出结果
//       console.log(stdout);
//       res.send(stdout);
//     });
//   });
// });


app.listen(port, function() {
  console.log(`服务器运行在 http://localhost:${port}`);
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值