使用节点运行express时出错

时间:2015-06-29 16:53:36

标签: javascript node.js express

我正在尝试在Mac上启动一个非常简单的服务器,以便我可以从localhost访问文件。

我安装了node和express,这就是我服务器文件中的所有内容。

var express = require('express'),
app = express();

app.use(express.static(__dirname, '/'));

app.listen(8080);

console.log("App listening on port 8080");

当我尝试做的时候:

node server

我将此作为回复:

/Users/mt_slasher/node_modules/express/node_modules/serve-static/index.js:47
var opts = Object.create(options || null)
                ^
TypeError: Object prototype may only be an Object or null: /
    at Function.create (native)
    at Function.serveStatic (/Users/mt_slasher/node_modules/express/node_modules/serve-static/index.js:47:21)
    at Object.<anonymous> (/Users/mt_slasher/Desktop/My Projects/Basket/Site/server.js:4:23)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

我在具有相同文件的Windows机器上运行同一个文件,没有问题。

经过一番挖掘,我发现这条线似乎是罪魁祸首:

app.use(express.static(__dirname, '/'));

有人能告诉我可能会发生什么吗?

3 个答案:

答案 0 :(得分:9)

那是因为你正在过去&#34; /&#34;作为第二个参数(选项)

app.use(express.static(__dirname + '/'));

参见serve-static:

function serveStatic(root, options) ...

https://github.com/expressjs/serve-static/blob/master/index.js

另请注意,使用与您的根不同的目录会更好,例如express.static(__dirname + '/public')以避免暴露您的根。

答案 1 :(得分:2)

express.static用于定义您的&#34;静态&#34;文件驻留查看here for more info

它只接受一个包含您想要静态路径的字符串:

所以你的代码应该是:

app.use(express.static('/'));

或者

app.use(express.static(__dirname + '/'));

但这并没有多大意义,imho。

删除该行或定义资产文件所在的实际路径。

答案 2 :(得分:0)

您传递给express.static的第二个参数不正确。删除第二个参数。 app.use(express.static(__目录名));