为Node.js安装Web服务器

为Node.js安装Web服务器,node.js,angularjs,npm,connect,Node.js,Angularjs,Npm,Connect,我正在努力学习我买的一本叫做“Pro Angular JS”的书,但我很难让web服务器指向正确的端口。因此,我转到命令行,运行节点,在尝试安装connect时遇到的第一个错误是: npm should be run outside of the node repl, in your normal shell. (Press Control-D to exit.) 好吧,很公平。因此,我按照命令指定的方式进行操作,让它以用户的身份进行安装,最后在我的用户根文件夹中添加了一个名为node_mod

我正在努力学习我买的一本叫做“Pro Angular JS”的书,但我很难让web服务器指向正确的端口。因此,我转到命令行,运行节点,在尝试安装connect时遇到的第一个错误是:

npm should be run outside of the node repl, in your normal shell.
(Press Control-D to exit.)
好吧,很公平。因此,我按照命令指定的方式进行操作,让它以用户的身份进行安装,最后在我的用户根文件夹中添加了一个名为node_modules的文件夹。好吧,似乎一切都有道理

现在,这本书告诉我在Node.js安装文件夹中创建一个server.js文件。我的用户上没有实际创建的Node.js安装文件夹。我确实看到了node_modules文件夹。所以我猜我的用户的根目录是安装node.js的地方,但它可能是隐藏的还是什么?我相信当我为Node使用Mac安装程序时,它说它是在usr/local/bin创建的。但我不知道这是否是我计算机上的用户,或者是我计算机的更多根访问权限

最后,回到这个server.js文件…所以我用一个文本编辑器创建了它,其中包含以下代码:

var connect = require('connect');

connect.createServer(
connect.static(".../angularjs")

).listen(5000);
当然,他们希望我将这个文件添加到安装节点的目录中。目前,它位于我的当前用户(用户是kst001)根目录所在的位置。这也是我在shell中使用npm安装连接行安装node_模块文件夹时创建它的地方。他们还希望我创建一个名为angularjs的文件夹,我将在其中存储我的应用程序,并说将其放置在安装node.js的根目录中。再一次,与其他内容一起位于根目录中。然而,当我尝试在端口5000(localhost:5000/test.html)中启动我的测试文档时,我得到了一个“找不到页面”错误

已经尝试使用此链接解决我的问题,这似乎对我的问题毫无意义,但没有解决任何问题:


顺便说一下,我用的是Mac电脑。有什么想法吗,伙计们?任何帮助都将不胜感激。

connect.static()不起作用的原因是,最新的主要版本connect(3.x)不再包含2.x中捆绑的所有connect中间件


connect的自述文件中有一个显示npm上模块名称的文件,该文件为您提供了每个中间件的旧功能(例如,
静态
现在被分解为自己的模块)。

我将遵循相同的书/示例和以下工作。我声称没有功劳,这是来自另一个关于设置简单服务器的堆栈溢出答案,加上同一答案上的评论内容(问题24346161从这里链接到它:)

因为我在完全相同的学习环境中使用了它(我也买了一本叫做“Pro Angular JS”的书),而且我已经在家里逛了3个小时试图解决这个问题(是的,我是一个完全的新手),所以我想我会把它贴在这里

首先从您的节点安装目录 npm安装服务静态

其次,您的node server.js代码用于在Windows 7机器上的localhost:5000浏览器窗口中提供angularjs目录内容的简单静态服务器(截至2015年7月)

我只是在angularjs目录中插入了一个简单的index.html文件,开始包含 连接工作


要测试它,它很有效。

那么我是否只需将connect.static更改为connect.service-static?我正在阅读文档,但它们的实现似乎与书中的教程大不相同……node.js社区的运行速度仍然相当快,因此书籍和其他参考资料可能很快就会过时。您需要
npm安装serve static
,然后使用
var static=require('serve-static')位于脚本顶部。然后替换
connect.static(…)带有
静态(…)好,这样做了,我得到一条错误消息,上面写着“hasnotmethodcreateserver”。我的代码如下:var static=require('service-static');var connect=require('connect');connect.createServer(static(“../angularjs”).listen(5000);我猜他们也删除了3.x中的
createServer()。我只想遵循中的示例,这样您就不会使用旧信息了。
createServer()
不会在connect上调用,而是
http
,因此请改用:
http.createServer(app)
var connect = require('connect'),
    serveStatic = require('serve-static');

var app = connect();

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