Node.JS readFileSync()函数 [英] Node.JS readFileSync() function

查看:208
本文介绍了Node.JS readFileSync()函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

index.js

var server = require("./server");
var router = require("./router");

server.start(router.route);

server.js

server.js

//Script to start a server

var http = require("http");
var url = require("url");
var fs = require("fs");

function start(route) {
    function onRequest(request, response) {

        var pathname = url.parse(request.url).pathname;

        route(pathname, response, fs);

    }

    http.createServer(onRequest).listen(8888);
    console.log("Server has started.");
}

exports.start = start;

router.js

router.js

function route(pathname, response, fs) {

    var regex = new RegExp('^/view/?$');

    var directpath = "D:/nodejs/file_upload" + pathname;

    var voo = fs.readFileSync(directpath);

    if(regex.test(pathname)){

        response.writeHead(200, {"Content-Type": "text/html"});
        console.log("About to route a request for " + pathname);
        response.end(voo);

    } else{

        response.writeHead(404);
        response.end("<br/>404, file not found");

    }
}

exports.route = route;

index.html

index.html

<!DOCTYPE html>
<html>
    <body>
        <p>Hello My friend </p>
    </body>
</html>

我正在尝试将文件路径存储在变量中,然后将其提供给readFileSync()函数,但这让我在控制台中出现了错误。

I'm trying to store the file path in a variable and then feed it ti readFileSync() function, but this gives me fllowing error in the console.

Error: EISDIR, illegal operation on a directory
    at Object.fs.readSync (fs.js:487:19)
    at Object.fs.readFileSync (fs.js:326:28)
    at route (D:\nodejs\file_upload\router.js:7:15)
    at Server.onRequest (D:\nodejs\file_upload\server.js:15:6)
    at Server.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2108:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23
)
    at Socket.socket.ondata (http.js:1966:22)
    at TCP.onread (net.js:527:27)

但是如果我直接在函数中输入路径D:/nodejs/file_upload/view/index.html,那么它会在浏览器中显示该页面。

but if I enter the path "D:/nodejs/file_upload/view/index.html" in the function directly then it shows me the page in the browser.

我存储了视图文件夹中的index.html文件

I stored the index.html file in the view folder

推荐答案

EISDIR 错误发生当您尝试打开文件时,但给出的路径是一个目录。请参阅相关问题和答案:使用Node.js我得到,错误:EISDIR,读取

EISDIR error occurs when you try to open a file, but the path given is a directory. See related question and answer: Using Node.js I get, "Error: EISDIR, read".

要调试这个,我会登录控制变量 directpath 和我认为它指向的是目录,而不是文件。正确地将此变量设置为预期路径可以解决您的问题。

To debug this I would log to console the variable directpath and I would assume that it is pointing to a directory, not a file. Correctly setting this variable to the intended path should solve your problem.

这篇关于Node.JS readFileSync()函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆