nodejs connect找不到静态

时间:2014-06-21 21:50:17

标签: node.js connect

注意:我已尝试过here给出的其他解决方案,但它没有工作

NodeJs的新手。我正在尝试关注AngularJS专业版,并坚持设置NodeJs服务器。根据书,我安装了nodejs,然后使用安装了connect包 npm install connect

然后在nodejs文件夹旁边的文件夹中下载angularjs。然后编写server.js文件连接到服务器。以下是文件的内容:

    var connect = require('connect');
connect.createServer(connect.static("../angularjs")).listen( 5000);

当我使用:

运行此server.js文件时
node server.js

我收到以下错误:

 function app(req, res, next){ app.handle(req, res, next); }
 merge(app, proto);
 merge(app, EventEmitter.prototype);
 app.route = '/';
 app.stack = [];
 return app;
 has no method 'static'
   at Object.<anonymous> (C:\web\nodejs\server.js:2:36)
   at Module._compile (module.js:456:26)
   at Object.Module._extensions..js (module.js:474:10)
   at Module.load (module.js:356:32)
   at Function.Module._load (module.js:312:12)
   at Function.Module.runMain (module.js:497:10)
   at startup (node.js:119:16)
   at node.js:906:3

任何想法的家伙? 感谢。

5 个答案:

答案 0 :(得分:217)

connect包在其最新的3.x版本的代码库中进行了一些更改,将static中间件移动到它自己的包中。 You can view the list of packages that have been moved here

所以你有两个选择:

选项1
您可以安装较旧的2.x版本的connect并按原样使用:

  

$ npm install connect@2.X.X

安装最新的2.X.X版本将使您当前的实现正常运行。

选项2
您可以继续使用3.x版本的connect,还可以添加serve-static

  

$ npm install serve-static

您还必须更新server.js文件以包含新的serve-static模块:

var connect = require('connect'),
    serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic("../angularjs"));
app.listen(5000);

答案 1 :(得分:8)

dylants的答案很有帮助。但是,以下是我为解决相同错误而遵循的确切步骤。 1.在命令窗口中,将目录更改为nodeJS的安装目录。 2.运行npm install connect后,运行:

npm install serve-static

3。使用以下代码创建名为server.js的文件:

var connect = require('connect'),
serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. 在命令窗口中,仍然在已安装nodeJS的目录中,运行:

    node server.js

  2. 导航到该网址 http://localhost:5000/test.html

  3. 这应该有效。这是我的目录配置: C:\ NodeJSInstallLocation \ angularjs

答案 2 :(得分:1)

var connect = require('connect'),
    serveStatic = require('serve-static');

connect().use(
    serveStatic("angularjs")
).listen(5000);

答案 3 :(得分:1)

你可能想尝试这样的事情

var express = require('express');
var app = express();
app.use(express.static('angularjs'));

答案 4 :(得分:0)

尝试一下...

  const express = require('express');
  const app = express();
  const path = require('path');

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