我正在尝试使用connect
开始提供一些静态网页,如下所示:
var connect = require("connect");
var nowjs = require("now");
var io = require("socket.io");
var app = connect.createServer(
connect.static(__dirname + '/public')
);
app.listen(8180);
所以我在与index.html
文件相同的目录中的/public
目录中添加了一个简单的app.js
,但是当我尝试在浏览器上查看该页面时,我从节点获得此响应:
不能获取 /
我做错了什么以及如何纠正它?
这段代码应该有效:
var connect = require("connect");
var app = connect.createServer().use(connect.static(__dirname + '/public'));
app.listen(8180);
另外在不支持的连接2.0 .createServer()方法中。请改用connect()。
var connect = require("connect");
var app = connect().use(connect.static(__dirname + '/public'));
app.listen(8180);
您通常希望渲染这样的模板:
not
但是,您也可以提供静态内容 - 这样做可以使用:
ctl+c
现在,项目的/ public目录中的所有内容都将作为站点根目录中的静态内容提供,例如如果您将default.htm放在公共文件夹中(如果可以访问/default.htm)
有关更多信息,请查看restart node app
和Connect Static中间件文档。
你可能在这里,因为你正在阅读Apress PRO AngularJS
书......
正如this question对KnarfaLingus
的评论所述:
[开始引用]
连接模块已重组。做:
npm install connect
并且
npm install serve-static
之后你的server.js
可以写成:
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic('../angularjs'));
app.listen(5000);
[结束语]
虽然我这样做,正如本书所暗示的那样,以这样一种更简洁的方式:
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(
serveStatic("../angularjs")
).listen(5000);
如果您没有指定要尝试获取的页面,则会看到消息Cannot GET /
,换句话说,如果您的URL类似于http://localhost:8180
。确保输入页面名称,例如http://localhost:8180/index.html
。
有同样的问题。它如上所述得到解决。
在我的index.js中
var port = 1338,
express = require('express'),
app = express().use(express.static(__dirname + '/')),
http = require('http').Server(app),
io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
});
http.listen(port, function(){
console.log("Node server listening on port " + port);
});
在我的index.html中
<!doctype html>
<html>
<head>
<title>
My page
</title>
</head>
<body>
<script src = "lib/socket.io.js"></script>
<script src = "lib/three.js"></script>
<script>
var socket = io();
</script>
</body>
</html>
three.js就在那里进行路径测试。这会将所有子文件设置为从应用程序的根目录开始。 socket.io.js也可以通过一些黑魔法使用<script src = "/socket.io/socket.io.js">
自动调用(因为物理上有一个node_modules和lib目录)。
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic('../angularjs'), {default: 'angular.min.js'}); app.listen(3000);
您可能还想尝试st,一个用于提供静态文件的节点模块。安装很简单。
npm install connect
npm install st
这是我的server-dev.js文件的样子:
var connect = require('connect');
var http = require('http');
var st = require('st');
var app = connect()
.use(st('app/dev'));
http.createServer(app).listen(8000);
或(禁用缓存):
var connect = require('connect');
var http = require('http');
var st = require('st');
var app = connect();
var mount = st({
path: 'app/dev',
cache: false
});
http.createServer(function (req, res) {
if (mount(req, res)) return;
}).listen(8000);
app.use(mount);
如果在命令行中执行“ng build”,通常可以确定“无法获取/”的解决方案。您经常会发现一个“导入”没有正确的路径。
提供静态文件的最简单方法是使用“竖琴”。在这里能找到它。您可以通过节点从您想要的位置提供文件:
var harp = require("harp")
harp.server(projectPath [,args] [,callback])
希望这可以帮助。
你可能需要qazxsw poi qazxsw poi qazxsw poi工作的过程。按restart
然后app.get
。