公共静态目录/ TypeError: path的参数.Join必须是字符串



我正在编写我的第一个nodejs/expressjs应用程序(在本教程中:nettuts+)),我陷入了这个简单但恼人的错误。我想做的很简单,我只是通过在命令行中输入(express -sessions -css less -hogan app)创建了我的应用程序项目,它为我创建了这个结构:

/public
    /images
    /javascripts
    /stylesheets
        style.less (It came with a style.less)
/routes
    /index.js
    /user.js
/views
    /index.hjs
/app.js
/package.json

直到现在

我用我的WinLess(因为我使用windows 8)来编译样式。

但是当我启动服务器(node app)我在命令行和浏览器中得到了这个错误(就在我试图访问127.0.0.1:3000/stylesheets/style.css时):

Express
500 TypeError: Arguments to path.join must be strings
at f (path.js:204:15)
at Object.filter (native)
at Object.exports.join (path.js:209:40)
at Object.handle (c:UsersWelder      LourençoDesktopWEBlearningexpressappnode_modulesless- middlewarelibmiddleware.js:128:26)
at next (c:UsersWelder LourençoDesktopWEBlearningexpressappnode_modulesexpressnode_modulesconnectlibproto.js:193:15)
at c:UsersWelder LourençoDesktopWEBlearningexpressappnode_modulesexpressnode_modulesconnectnode_modu lesexpress-sessionindex.js:350:9
at Object._onImmediate (c:UsersWelder    LourençoDesktopWEBlearningexpressappnode_modulesexpressnode_modulesconnectnode_modu lesexpress-sessionsessionmemory.js:50:9)
at processImmediate [as _immediateCallback] (timers.js:330:15)

在命令行中也出现了这个错误:

GET /stylesheets/style.css 500
我真不知道该怎么办,有人能帮帮我吗?这里,遵循我的代码。
/**
 * Module dependencies.
 */
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hjs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(process.cwd() + '/public'));
app.use(app.router);
// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

Expressjs版本:3.5.0Nodejs版本:0.10.26操作系统:windows 8

我也有同样的问题。

尝试替换行:

app.use(require('less-middleware')({ src: __dirname + '/public' }));

app.use(require('less-middleware')(__dirname + '/public'));

我引用了less-middleware页面上概述的格式

最新更新