我是新的节点,实践中我认为开发一个天气命令行应用程序,但我发现了一个问题与ajax请求,我通常使用jQuery的$ .ajax但它不起作用,(我试图要求jQuery)。我已经用另一个模块解决了这个问题。NodeJs:不能写一个文件
现在的问题是:当我尝试打印在coords.json JSON信息和接下来读JSON模块读取它也有一些“\” &“\ n”无处不在的字符串,我试图用正则表达式替换它和fs模块,但它不重写该文件...为什么?
这里全码:
// index.js
// modules
const program = require('commander');
const clear = require('clear');
const chalk = require('chalk');
const request = require('ajax-request');
const fs = require('fs');
const json = require('read-data').json;
const writeJson = require('write-json');
// Forecast.io Key
const key = "*************";
const freegeoip = "http://freegeoip.net/json/";
let latitude = 0,
longitude = 0 ;
// forecast.io api url
const url = `https://api.darksky.net/forecast/${key}/${latitude},${longitude}`;
// initialize myData with the freegeoip datas
let myData = request({
url: 'http://freegeoip.net/json/',
method: 'GET',
data: {
format: 'json'
},
}, function(err, res, body) {
writeJson('test.json', body, function(err) {
if (err) console.log(err);
});
});
fs.readFile('test.json', 'utf8', function (err,data) {
let result = data.replace(/[\\~#%&*<>?|\-]/g, '');
fs.writeFile('test.json', result, 'utf8', function (err) {
if (err) return console.log(err);
// if i do this is normal json
// console.log(result)
});
});
,并在文件中的输出是:
// coords.json
"{\"ip\":\"**.**.**.**\",\"country_code\":\"IT\",\"country_name\":\"Italy\",\"region_code\":\"62\",\"region_name\":\"Latium\",\"city\":\"Rome\",\"zip_code\":\"00119\",\"time_zone\":\"Europe/Rome\",\"latitude\":**.*,\"longitude\":**.**\"metro_code\":0}\n"
,但如果我在控制台打印出来这是正常的...
您的代码做什么用'coords.json' –
您有一个异步的问题。你的'fs.readFile()'在writeJson()函数完成之前执行。 – jfriend00
是的,我知道在这个代码中coords不会出现,test.json是同一个文件 – rawnly