nodejs 路径问题,奇怪不解。
发布于 10 年前 作者 veiny 12035 次浏览 最后一次编辑是 8 年前 来自 问答

做个小测试: nodejs项目目录结构 nodetest/ index.js handle.js package.json public/template.html

var http = require('http');
var handler=require('./writeResponse');
 http.createServer(function (request, response) {
        response.writeHeader(200,{'Content-Type':'text/html'});
      	handler.writeResponse(response);
    }).listen(3000);
    console.log('Server is Start!');


![writeResponse.js]

 var fs = require('fs');
 function writeResponse(res) {
    var temfile = './public/template.html';###注意这里的路径
    fs.exists(temfile, function (exist) {
        if (exist == true) {
            fs.readFile(temfile, {'encoding': 'utf8', 'flag': 'r'}, function (err, data) {
                data = data.replace(/{title}/g, 'This is Index Page![from template]');
                res.write(data);res.end();
            });
        } else {
            res.write('<h1>This is Error Page!'+temfile+'</h1>');
            res.end();
        }
    });
}
exports.writeResponse = writeResponse;

![package.json]
{
    "name": "nodetest",
    "version": "0.0.1",
    "main":"/index.js"
}
\n```


![问题是在nodetest目录下:”node index.js“程序运行良好
在nodetest上层目录运行:“node nodetest”  fs读取未能读取public/template.html文件。
请问含有package.json的文件包,包内的代码如何编码才能确保路径的正确?]我是新手,Why
4 回复

fs模块里的函数 的参数里 相对路径 都是相对于 process.cwd() 的
用__dirname 可以得到当前文件所在的目录

采用path模块混编 __dirname,fs模块是可以处理绝对路径的。

经典问题, requirefs 的相对路径问题, fs 推荐绝对路径寻址,稳定可靠

“main”:"/index.js"

这个入口文件路径是否写错了成绝对路径?应该是"./index.js"或"index.js"

回到顶部