私はノードで新しいです、私は天気のコマンドラインアプリケーションを開発すると思っていましたが、私はajaxリクエストに問題があることを発見しました。通常jqueryの$ .ajaxを使用します。それは動作しません(私はjqueryを要求しようとしました)。私は別のモジュールでこの問題を解決しました。NodeJs:ファイルを書き込むことができません
は今、問題がある:私はcoords.jsonにJSON情報を印刷しようと次&「\ n」はどこでも、文字列の一部の「\」がある読み取りJSONモジュールでそれを読んだとき、私はregexと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
はい、私はこのコードで知っていることは分かりませんが、test.jsonは同じファイルです – rawnly