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