javascript - 使用 Node 运行 express 时出错

标签 javascript node.js express

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

我安装了 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, '/'));

谁能告诉我可能发生了什么?

最佳答案

那是因为你将“/”作为第二个参数(选项)传递

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

参见静态服务:

function serveStatic(root, options) ...

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

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

关于javascript - 使用 Node 运行 express 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121296/

相关文章:

javascript - 为什么 JS 将 [ 'foo'] 解释为读取属性而不是数组声明

javascript - 如何在 JavaScript/node.js 中删除 HTTP 响应 header 中的无效字符?

javascript - 基于类的 DOM 事件委托(delegate)

javascript - 正则表达式用链接替换网址

bash - 从 bash 脚本调用 grunt.js 时出现问题

javascript - Node.js 应用程序在本地正常工作,但在 Droplet Ubuntu 上出现 404 错误

javascript - 如何通过nodejsexpress从Angularjs上传文件到s3

javascript - 如何在 Angular 2 中使用 Angular 1 指令

javascript - 点击 <a> 标签时 Jquery 没有正确延迟

javascript - node-fetch 不适用于 AWS lambda 函数 ("cannot find node-fetch")