EBADF, read

來源:互聯網
上載者:User

標籤:

nodejs讀取檔案出的一個錯誤,解決不了,自己技術還達不到,解決不了這麼高深的問題。

描述:需要記錄訪問的人數,每個人隨機到的酒。打算用json檔案來儲存:read count write count; read user write user,結果出現了如下問題。

網上能找到的相關答案:http://www.tuicool.com/articles/2Qn2Un

以後的打算:

1、盡量避免用file來儲存,需要頻繁並發訪問的資料;

2、nodejs一出錯就掛了,所以需要好好研究下異常處理

錯誤提示:

events.js:85      throw er; // Unhandled ‘error‘ event            ^Error: EBADF, read    at Error (native)

錯誤碼: 

var express = require(‘express‘);var router = express.Router();var fs = require(‘fs‘);var path = require(‘path‘);var util = require(‘util‘);var wine_data = [    {        "name":"熊貓精釀生薑金色艾爾",        "money":50,        "reason":"暖心向,極品雲備胎",        "reason-1":"備胎不易。賞50元,來熊貓精釀喝杯",        "reason-2":"別暖了TA,冷了自己",        "href":"http://weidian.com/item.html?itemID=1623850670&wfr=wx&from=singlemessage&isappinstalled=1",        "image":"shengjiang.png"    }];function selectResult(ran, res, uname){    if(ran < 3){                res.render(‘result‘, {            uname: uname,            wname: wine_data[ran].name,            reason: wine_data[ran].reason,            reason1: wine_data[ran]["reason-1"],            reason2: wine_data[ran]["reason-2"],            money: wine_data[ran].money,            href: wine_data[ran]["href"]        });    }else{                        res.render(‘result-n‘, {            uname: uname,            wname: wine_data[ran].name,            reason: wine_data[ran].reason                    });    }}/* GET home page. */router.get(‘/‘, function(req, res, next) {    var count_path = path.join(process.cwd(), ‘/public/data/count.json‘);    fs.readFile(count_path, function(err, data){        if(err){            console.log(‘err:‘+err);        }else{            // console.log(‘data:‘+data);        }        var data_json = JSON.parse(data);        var count = data_json.count;        count++;        res.render(‘index‘, {            count:count        });        data_json.count = count;        fs.writeFile(count_path, JSON.stringify(data_json, function(key, value){return value;}, 4), function(err){                        if(err){                console.log(‘add count fail:‘+err);            }else{                // console.log(‘del success‘);            }        });   //writeFile end    });  //readFile end    });router.get(‘/result‘, function(req, res, next) {    var user_path = path.join(process.cwd(), ‘/public/data/user.json‘);    var uname = req.query.uname;    fs.readFile(user_path, function(err, data){        if(err){            console.log(‘err:‘+err);        }else{            // console.log(‘data:‘+data);        }        var data_json = JSON.parse(data);                if(data_json[uname] !== undefined){            // 存在            var ran = +data_json[uname];            selectResult(ran, res, uname);                    }else{            // 不存在            var ran = parseInt(data.length*Math.random());            data_json[uname] = ran;            selectResult(ran, res, uname);                        fs.writeFile(user_path, JSON.stringify(data_json, function(key, value){return value;}, 4), function(err){                            if(err){                    console.log(‘add user fail:‘+err);                }else{                    // console.log(‘add user success‘);                }            });   //writeFile end        }// 是否存在 結束           });  //readFile end});module.exports = router;

 

EBADF, read

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.