Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在从外部连接时将外部文件包含到节点js项目中_Javascript_Node.js - Fatal编程技术网

Javascript 如何在从外部连接时将外部文件包含到节点js项目中

Javascript 如何在从外部连接时将外部文件包含到节点js项目中,javascript,node.js,Javascript,Node.js,server.js var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ socket.on

server.js

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});
index.html

<!doctype html>
<html>
  <head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Socket.IO chat</title>
    <link href="style.css" rel="stylesheet" type="text/css">
  </head>
  <body>
    <div id="chat">
        <ul id="messages"></ul>
        <input id="m" autocomplete="off">
        <div id="button">Send</div>
    </div>

    <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      var socket = io();
      $('#button').on('click touchstart', function(){
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
      });
      socket.on('chat message', function(msg){
        $('#messages').append($('<li>').text(msg));
      });
    </script>
  </body>
</html>

听起来你可能没有把事情安排好。您需要在路由之前声明静态路径。大概是这样的:

var express = require('express');
var app = express();

app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});
以下是您的
server.js
文件的更新版本:

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

问题是,在此代码中
express
returns
express未定义
您能否构造代码,使其在我包含的服务器代码下工作,或者简要指示我如何重新定义变量,使其不会返回这些错误;)现在有了您提供的新代码,我得到了错误
路径未定义
为什么会这样?哦,我解决了它,我只是缺少
var path=require('path'),也应该是
/public
,而不是
public
,现在它可以工作了,谢谢:)
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});