Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 Express.js服务器突然不工作-无法获取/_Javascript_Html_Express - Fatal编程技术网

Javascript Express.js服务器突然不工作-无法获取/

Javascript Express.js服务器突然不工作-无法获取/,javascript,html,express,Javascript,Html,Express,我使用node.js的极其简单的express服务器突然停止工作。它工作得很好(目前只在我本地的机器上测试),然后我尝试使用browserify(它不工作,我最终删除了它),当我回到站点时,我收到了一个无法获取/错误 我尝试过卸载browserify,重新安装它,卸载并重新安装我正在使用的两个npm软件包,甚至删除我所有的文件夹,从头开始(只是在几个文件上粘贴代码)。不管怎样,我还是会犯同样的错误,我不知道为什么。如果我打开index.html,它仍然可以完美地打开,而当我运行我的服务器(ind

我使用node.js的极其简单的express服务器突然停止工作。它工作得很好(目前只在我本地的机器上测试),然后我尝试使用browserify(它不工作,我最终删除了它),当我回到站点时,我收到了一个无法获取/错误

我尝试过卸载browserify,重新安装它,卸载并重新安装我正在使用的两个npm软件包,甚至删除我所有的文件夹,从头开始(只是在几个文件上粘贴代码)。不管怎样,我还是会犯同样的错误,我不知道为什么。如果我打开index.html,它仍然可以完美地打开,而当我运行我的服务器(index.js)时,它不会抛出任何错误,并且似乎正在按预期进行侦听

目前的服务器:

var path = require('path');
var express = require('express');
var app = express();
var dir = path.join(__dirname, 'public');

app.use(express.static(dir));

app.listen(3000, function () {
    console.log('Listening on http://localhost:3000/');
});
我的文件当前的结构如下:

  • 公开的
    • 资产(只有一些图像)
    • 节点单元
    • index.html
    • index.js
    • package-lock.json
    • styles.css

您的
index.html
文件应该位于
公共文件夹中,然后它就可以工作了。目前,您已将静态路径设置为不包含任何文件的公用文件夹。

由于您的服务器路径为
/public/index.js
path.join(u dirname,'public')
正在解析为
/Users/../your\u directory/public
。Express找不到这样一个目录,因此它将沿着管道继续运行。由于未定义GET
/
路由,Express将抛出错误

我建议从
/public
中删除您的服务器文件

以下是新目录树的外观:

my_directory
    node_modules
    public
        assets
        index.html
        styles.css
    server
        server.js (index.js in your case)
设置目录树后,可以更改以下内容:

var dir = path.join(__dirname, 'public');

// becomes

var dir = path.join(__dirname, '..', 'public');

// The '..' is used to move one directory level up.

然后,您应该能够在前往时看到
index.html

如果您没有提供
index.html
,您应该将其移动到您的
public
文件夹下,因为这是您设置静态路由的地方。很抱歉,这是一个格式错误,请立即修复它-还有其他想法吗?@khan抱歉,我不知道您的意思,它应该在哪里?如果不考虑您的Express app文件在您的目录中的位置,它在早期运行正常?与您的问题无关,但在您的
公用
目录中不应该有
节点_modules
。您不想提供对代码目录的公共访问。很抱歉,这是一个格式错误,它在公共文件夹中工作!非常感谢您的耐心和解释一些基本的最佳实践,我相信您会知道这是我第一次这样做