这是我编写nodejs的第一天。这是一本名为node.js的书中的代码示例。这是一本很好的书,里面有关于如何将node.js编码为初学者的一些很好的信息。但是在1天之后,我遇到了一个错误。我已复制代码并尝试了所有内容,但似乎没有任何工作。这是我无法开始工作的代码。
尝试运行时出现错误:ReferenceError:未定义serveStatic
我现在已经安装了模块,并在我的文件中需要它。 现在我收到一个新错误:" TypeError:根路径必须是字符串"
现在说
TypeError:根路径必须是字符串 at serveStatic(/Applications/XAMPP/xamppfiles/htdocs/learningmern/chatapp1/node_modules/serve-static/index.js:44
var http = require("http");
var fs = require("fs");
var path = require("path");
var mime = require("mime");
var cache = {}
// Helper functions
function send404(res){
res.writeHead(404,{"Content-Type":"text/plain"});
res.write("error 4o4");
res.end();
}
function sendFile(res, filePath, fileContents){
res.writeHead(200, {"Content-Type": mime.lookup(path.basename(filePath)) });
res.end(fileContents);
}
function serveCache(res, cache, absPath){
if (cache[absPath]){
readFile(res, absPath, cache[absPath]);
} else {
fs.exists(absPath, function(exists){
if (exists){
fs.readFile(absPath, function(err, data){
if (err){
send404(res);
} else {
cache[absPath] = data;
fs.readFile(res, absPath, data);
}
})
} else {
send404(res);
}
})
}
}
//run server
var server = http.createServer(function(req, res){
var filePath = false;
if (req.url == "/"){
filePath = "public/index.html";
} else {
filePath = "public" + req.url;
}
var absPath = "./" + filePath;
serveStatic(res, cache, absPath);
});
server.listen(3000, function(){
console.log("server started at port 3000");
});
由于
答案 0 :(得分:0)
您需要安装该软件包。运行这个:
npm install serve-static
也需要它。把它放在最上面的要求部分。
var serveStatic = require('serve-static')
答案 1 :(得分:0)
安装server-static
npm后,这是您正在处理的错误的解决方案。您在定义变量之前调用变量,因此您需要将代码更改为
var http = require("http");
var fs = require("fs");
var path = require("path");
var mime = require("mime");
var serveStatic = require('serve-static');
var filePath = ""; //define filePath here for the functions to not run an error
var absPath = "./" + filePath;
var cache = {};
var server = http.createServer(function(req, res){
if (req.url == "/"){
filePath = "public/index.html";
} else {
filePath = "public" + req.url;
}
serveStatic(res, cache, absPath);
});
// Helper functions
function send404(res){
res.writeHead(404,{"Content-Type":"text/plain"});
res.write("error 4o4");
res.end();
}
function sendFile(res, filePath, fileContents){
res.writeHead(200, {"Content-Type": mime.lookup(path.basename(filePath)) });
res.end(fileContents);
}
function serveCache(res, cache, absPath){
if (cache[absPath]){
readFile(res, absPath, cache[absPath]);
} else {
fs.exists(absPath, function(exists){
if (exists){
fs.readFile(absPath, function(err, data){
if (err){
send404(res);
} else {
cache[absPath] = data;
fs.readFile(res, absPath, data);
}
})
} else {
send404(res);
}
})
}
}
//run server
server.listen(3000, function(){
console.log("server started at port 3000");
});