我正在尝试阅读我购买的一本名为“Pro Angular JS”的书,但我在将 Web 服务器指向正确的端口时遇到问题。所以我进入命令行,运行 Node,在尝试安装 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 中创建的。但我不知道这是否是我计算机上的用户,或者是否是对我计算机的更多 root 访问权限。
最后,回到这个 server.js 文件...所以我用文本编辑器创建了它,包含以下代码:
var connect = require('connect');
connect.createServer(
connect.static(".../angularjs")
).listen(5000);
当然他们希望我将此文件添加到我的 Node 安装目录中。目前,它位于我当前用户(用户是 kst001)根目录所在的位置。这也是我使用 shell 中的 npm install 连接行安装它时创建的 node_module 文件夹的位置。他们还希望我创建一个名为 angularjs 的文件夹,在其中存储我的应用程序,并表示将其放在安装 node.js 的根目录中。再次,与其他所有内容一起坐在根目录中。然而,当我尝试在端口 5000 (localhost:5000/test.html) 中启动测试文档时,我收到“无法找到页面”错误。
已经尝试使用此链接来解决我的问题,这对于我的问题来说似乎是完全正确的,但它没有解决任何问题:
顺便说一下,我使用的是 Mac。伙计们,有什么想法吗?任何帮助将不胜感激。
connect.static()
不起作用的原因是connect的最新主要版本(3.x)不再包含connect在2.x中捆绑的所有中间件。
connect 的自述文件有一个中间件引用列表,它向您显示 npm 上的模块名称,该模块为您提供每个中间件的旧功能(例如,
static
现在分解为自己的模块serve-static
) ).
我正在遵循同一本书/示例和以下作品。我不主张任何信用,它来自另一个关于设置简单服务器的 Stack Overflow 答案以及同一答案的评论内容(问题 24346161 从这里链接到它:nodejs connect 找不到静态)
因为我在完全相同的学习环境中使用了它(我还购买了一本名为“Pro Angular JS”的书),并且我已经在房子里待了 3 个小时试图解决这个问题(是的,我是一个完全的新手),所以我想我应该发布在这里。
首先从您的节点安装目录 npm installserve-static
其次,您的 Node server.js 代码用于一个简单的静态服务器,以便在 Windows 7 计算机上的 localhost:5000 浏览器窗口中为您的 angularjs 目录内容提供服务(截至 2015 年 7 月)...
var connect = require('connect'),
serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic("./angularjs"));
app.listen(5000);
我只是在 angularjs 目录中粘贴了一个简单的 index.html 文件来开始包含
连接工作
测试一下,效果很好。