Node.js连接找不到静态


118

注意:我已经尝试过这里给出的其他解决方案但是没有用

NodeJ的新手。我试图跟随AngularJS专业人士,并陷入设置NodeJs服务器。根据书,我安装了nodejs,然后使用npm install connect安装了connect软件包

然后将angularjs下载到nodejs文件夹旁边的文件夹中。然后编写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

有想法吗?谢谢。

Answers:


219

connect软件包对其代码库的最新3.x版本进行了一些更改,将static中间件移至其自己的软件包。 您可以在此处查看已移动的软件包列表

因此,您有两种选择:

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

$ npm安装connect@2.XX

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

选项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);

5
在同一个文件夹,即./angularjs的情况下使用单点工作对我来说
coure2011

@ coure2011这一切都取决于您pwd何时启动节点。node server.js从头开始运行时使用两个点是正确的/angularjs(大概您的密码是/angularjs/..
Michael

我尝试了这个,现在在浏览器“无法获取/”中遇到错误
Ans Bilal

@AnsBilal尝试“ localhost:5000 / test.html”。假设您正在按照本书中的示例(在OP中引用)进行操作,那么URL应该适合您。
akvallejos

是的,我正在尝试本书中的一个例子(Adam Freeman的Pro AngularJs)。点燃后位搜索我来解决,我张贴在我的博客的人也:anscoding.blogspot.com/2017/11/...
答比拉尔

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的目录中,运行:

    节点server.js

  2. 导航到URL http:// localhost:5000 / test.html

这应该工作。这是我的目录配置:C:\ NodeJSInstallLocation \ angularjs




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.