簡體   English   中英

Express.js 服務器突然無法工作 - 無法獲取 /

[英]Express.js server not working all of a sudden - Cannot GET /

我使用 node.js 的極其簡單的快速服務器突然停止工作。 它工作正常(現在只在我的本地機器上測試它),然后我嘗試使用 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/');
});

我的文件目前的結構如下:

  • 民眾
    • 資產(只有一些圖片)
    • 節點模塊
    • 索引.html
    • 索引.js
    • 包-lock.json
    • 樣式文件

您的index.html文件應該在public文件夾中,然后它就會工作。 目前,您已將靜態路徑設置為不包含任何文件的公用文件夾。

由於您的服務器的路徑是/public/index.jspath.join(__dirname, 'public')正在解析為/Users/.../your_directory/public/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.

然后,您應該能夠在訪問http://localhost:3000時看到index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM