linux下通过nodejs的fs模块读写和生成文件

本文讲述了在Linux服务器上使用Node.js的fs模块遇到的权限、路径、读写文件等问题,包括npm安装失败、生成文件冲突、目录解析差异、JSON格式错误和编码问题,并提供了解决方案及脚本示例。
摘要由CSDN通过智能技术生成

1.故事背景

本地电脑是windows的,测试环境服务器是linux的,现在要把写好的脚本分享一下,放到服务器上方便别人用,鼓捣好环境之后上传,简单运行下,结果各种祖传报错,接下来开始填坑=。=

2.出现的问题汇总

①权限问题,npm安装失败。
②权限问题,生成文件失败。
③路径问题,目录不存在。
④读取问题,读取失败。
⑤读取问题,编码方式不符合预期。

经典场景,我 测 我 自 己
在这里插入图片描述

3.解决方法

①npm安装失败:
这里直接给nodejs文件夹读写权限即可。

sudo chmod 755 nodejs

②生成文件失败,这个比较nt,是由于路径下有一个777权限的重名文件引发冲突,删了就好。

③目录不存在问题,win和linux两个平台对目录的解析还是有点区别的,这里通过引入path模块来解决,大概这样子的:

path.join(__dirname, "./test.txt")

④读取失败,这里补充下背景,要读的是一个json串,win都死里运行是没有问题的,到了linux出现读取失败的报错,最后发现是由于key没加引号造成的悲剧,我大意了啊没有闪。

在这里插入图片描述
⑤编码不符合预期,这个是fs模块读取上面那个txt出现的问题,代码如下

let raw_txt = fs.readFileSync(path.join(__dirname, "./nglp_raw.txt"))

读是读出来了,读出了个buffer流,咱也看不懂。。后来去stackoverflow冲浪发现了类似问题,发现多加个编码参数即可解决,如下

let raw_txt = fs.readFileSync(path.join(__dirname, "./nglp_raw.txt"), 'utf-8')

4.贴下脚本

main.js

'use strict'

let fs = require('fs')
let path = require('path')
let http = require('http')
let raw_txt = fs.readFileSync(path.join(__dirname, "./nglp_raw.txt"), 'utf-8')
let raw = JSON.parse(raw_txt)

let options_nglp = {
   
    host: 'restapi.autoai.com',
    prot: 80,
    path: `/direction/v1/driving?ak=L17O7JM195q75k1Z9u3s9n1zj7______&orig=${
     raw.orig}&dest=${
     raw.dest}`,
    method: 'GET',
    headers: {
    'Content-Type': 'Applicat
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值