【问题标题】:Node/Express trouble out of the box开箱即用的 Node/Express 问题
【发布时间】:2015-12-18 22:12:59
【问题描述】:

我刚刚为我正在编写的教程安装了 Node 和 Express。当我尝试运行我的 server.js 时,我得到了这个。怎么了?我知道如何阅读回溯,但我不想在 Express 中胡闹,因为在我看来它应该是原始的,刚刚安装。

example_app/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 [as static] (/Users/blahblah/folder/folder/folder/folder/folder/example_app/node_modules/express/node_modules/serve-static/index.js:47:21)
  at Object.<anonymous> (/Users/blahblah/folder/folder/folder/folder/folder/example_app/server.js:4:23)
  at Module._compile (module.js:435:26)
  at Object.Module._extensions..js (module.js:442:10)
  at Module.load (module.js:356:32)
  at Function.Module._load (module.js:311:12)
  at Function.Module.runMain (module.js:467:10)
  at startup (node.js:136:18)
  at node.js:963:3

这里是 server.js:

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

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

app.get('/customers/:id', function(req, res) {
    var customerId = parseInt(req.params.id);
    var data = {};
    for (var i=0,len=customers.length;i<len;i++) {
        if (customers[i].id === customerId) {
           data = customers[i];
           break;
        }
    }
    res.json(data);
});

app.get('/customers', function(req, res) {
    res.json(customers);
    //res.json(500, { error: 'An error has occurred!' });
});

app.get('/orders', function(req, res) {
    var orders = [];
    for (var i=0,len=customers.length;i<len;i++) {
        if (customers[i].orders) {
            for (var j=0,ordersLen=customers[i].orders.length;j<ordersLen;j++) {
                orders.push(customers[i].orders[j]);
            }
        }
    }
    res.json(orders);
});

app.delete('/customers/:id', function(req, res) {
    var customerId = parseInt(req.params.id);
    var data = { status: true };
    for (var i=0,len=customers.length;i<len;i++) {
        if (customers[i].id === customerId) {
           customers.splice(i,1);
           data = { status: true };
           break;
        }
    }
    res.json(data);
});

app.listen(8080);

console.log('Express listening on port 8080');

【问题讨论】:

  • 你能把你的server.js代码放在你的帖子里吗?

标签: node.js macos express


【解决方案1】:

这是错误的:

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

应该是:

app.use(express.static(__dirname));

如果你想附加一个子目录,你可以使用这个:

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

请注意,您使用的是已弃用的 Express 版本 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多