【问题标题】:Nodejs on single page单页上的Nodejs
【发布时间】:2015-01-01 15:39:50
【问题描述】:

我是 Nodejs 的新手。 我必须在现有网站上使用 node js、express、socket.io 做一个 web 应用程序。 我在 Parallels Plesk 面板上使用 JXcore 来执行节点。 但是当我运行 js 文件并访问网站上的任何页面时,它会返回“Cannot GET”。 如果我使用 express get() 函数:

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

app.get('/path/to/index.html', function(req, res){
  res.sendfile( path.resolve(__dirname + '/index.html') );
});

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

它可以在 /path/to/index.html 上运行,但所有其他网站页面都被相同的错误“无法获取”阻止。 有没有办法只在一页上运行节点? 谢谢

【问题讨论】:

  • 您对app.get 的使用是错误的。请参考框架文档expressjs.com
  • 我不认为您的问题与 JXcore 有关。尝试在本地机器上使用 node 运行应用程序,您将遇到同样的问题。

标签: javascript node.js express websocket socket.io


【解决方案1】:

您的代码正在做的只是定义一个路由/path/to/index.html 并将其映射到您的 index.html 文件。如果你想从一个目录提供文件,静态 html/css/js/whatever 文件,你可以使用 express 提供的静态方法:

app.use("/", express.static(__dirname + '/myHtmlDirectory'));

将“myHtmlDirectory”更改为您存储文件的任何目录,并确保更改包含以定义 express:

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

但是,如果您希望所有 GET 请求都指向一个文件,例如 index.html,您可以使用以下内容:

app.get('*', function (req, res) {
  res.sendfile( path.resolve(__dirname + '/index.html') );
});

【讨论】:

  • 感谢您的回复。您的代码可以正常工作,但我在访问其他页面时遇到同样的错误(来自 /path/to/ 目录)。我不明白我是否不能在同一个域中保留两个不同的应用程序(节点应用程序和非节点应用程序),或者是否在服务器上安装 JXCore 时出错
猜你喜欢
  • 2014-12-11
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2018-01-04
  • 1970-01-01
相关资源
最近更新 更多