javascript - 使用带有快速服务器的文件

标签 javascript node.js express

var express = require('express'),
    app = express(),
    db = require('./db'),
    bodyParser = require('body-parser'),
    controller = require('./controller');


app.use(express.static('../public'));

app.get('/server', function (req, res) {
  console.log(__dirname);
    res.sendFile('/../client/index.html');
});

我已经设置了这个快速服务器,但是使用上面的代码,当我查看 localhost:portnumber 时,我得到“Cannot GET/”。如果我将 GET 方法更改为:

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

我得到“'C:\Users\TC\Documents\Desktop\myapp\multiplayerWebSite\server..\client\index.html' at Error (native)”,如果我将其更改为:

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

我收到“类型错误:路径必须是绝对路径或指定根目录到 res.sendFile” 错误:ENOENT:没有那个文件或目录

当我在根目录中拥有所有内容时,服务器工作正常,但我想更改文件夹结构以使其更整洁/专业。如果有人能告诉我我做错了什么,我将不胜感激。提前致谢!

最佳答案

你可以使用 path 模块,有一个 join 方法可以将多个路径组合成一个。

如果你这样做的话:

path.join('test/musicfolder', '../videofolder/allreadyseen')

你会得到 'test/videofolder/allreadyseen'

您可以在此处查看所有文档:https://nodejs.org/api/path.html

var express = require('express'),
    path = require('path'),
    app = express(),
    db = require('./db'),
    bodyParser = require('body-parser'),
    controller = require('./controller');


app.use(express.static(path.join(__dirname, '../public')));

app.get('/server', function (req, res) {
  console.log(__dirname);
    res.sendFile(path.join(__dirname, '../client/index.html'));
});

关于javascript - 使用带有快速服务器的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39543980/

相关文章:

javascript - 你如何动态地添加一个按钮/插件到 TinyMCE?

node.js - Grunt Connect 需要 .html 扩展名

node.js - ExpressJS/PassportJS : Authentication vs. session

docker - 我需要多少个Docker容器,如何在它们之间分隔代码?

node.js - Node + Express 服务器在 OPTIONS 预检请求后未响应

javascript - 概括一个专门的 JQuery 函数

javascript - 在 iOS/Android 上的 HTML5 混合应用程序中持久存储的可靠方法

javascript - 替换函数仅替换每隔一个正则表达式匹配

javascript - MongoDB find() 使用 mongoose 返回空 - node.js

node.js - 设计 Mongoose 模型