Node.js上的Connect“无法获取/”

问题描述 投票:48回答:9

我正在尝试使用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,但是当我尝试在浏览器上查看该页面时,我从节点获得此响应:

不能获取 /

我做错了什么以及如何纠正它?

http node.js connect
9个回答
14
投票

这段代码应该有效:

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

-2
投票

您通常希望渲染这样的模板:

not

但是,您也可以提供静态内容 - 这样做可以使用:

ctl+c

现在,项目的/ public目录中的所有内容都将作为站点根目录中的静态内容提供,例如如果您将default.htm放在公共文件夹中(如果可以访问/default.htm)

有关更多信息,请查看restart node app和Connect Static中间件文档。


25
投票

你可能在这里,因为你正在阅读Apress PRO AngularJS书......

正如this questionKnarfaLingus的评论所述:

[开始引用]

连接模块已重组。做:

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

19
投票

如果您没有指定要尝试获取的页面,则会看到消息Cannot GET /,换句话说,如果您的URL类似于http://localhost:8180。确保输入页面名称,例如http://localhost:8180/index.html


2
投票

有同样的问题。它如上所述得到解决。

在我的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目录)。


1
投票
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect(); 
app.use(serveStatic('../angularjs'),  {default: 'angular.min.js'}); app.listen(3000); 

1
投票

您可能还想尝试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);

1
投票

如果在命令行中执行“ng build”,通常可以确定“无法获取/”的解决方案。您经常会发现一个“导入”没有正确的路径。


0
投票

提供静态文件的最简单方法是使用“竖琴”。在这里能找到它。您可以通过节点从您想要的位置提供文件:

var harp = require("harp")
harp.server(projectPath [,args] [,callback])

希望这可以帮助。


0
投票

你可能需要qazxsw poi qazxsw poi qazxsw poi工作的过程。按restart然后app.get

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.