簡體   English   中英

嘗試提供靜態文件時未定義 Node JS Express

[英]Node JS Express is not defined when I try to serve static files

我正在嘗試從應用程序目錄中的“www”目錄為應用程序提供靜態內容。

我的文件夾如下所示:

    -www
    --node_modules
    --js
    --index.js
    --index.html
    --package.json

我想使用 js 文件夾中的 main.js 文件,但是當我嘗試使用

    <script src="/js/main.js"></script> 

在 index.html 中,我的控制台給了我一個 GET 錯誤和 404 文件未找到。

我的代碼看起來像這樣:

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

    app.use(express.static(__dirname + '/www'));

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

當我嘗試運行服務器時,出現錯誤:

    app.use(express.static(__dirname + '/www');
    ReferenceError: express is not defined

有人可以告訴我為什么會發生這種情況嗎?

你忘記導入快遞了。

您還應該將非靜態文件移到“www”之外,因為這是您想要的“靜態文件”路徑。

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

 var publicPath = path.resolve(__dirname, 'www');


 app.use(express.static(publicPath));
 app.get('/', function(req, res){
     res.sendFile('index.html', {root: publicPath});
 });

在您的代碼中,您尚未聲明任何名為 express 的變量。 如果沒有命名為 express 的變量,您可以如何調用它的變量/函數/鍵。

要使用 express./anything/ 您必須在代碼中聲明express變量。 可以通過

var express = require('express');

使用 Webstorm,如果我使用它就不起作用:

const express = require('express');

但是使用: var express = require('express');

也許它與Webstorm有關,也許它不是一個“好”的答案,但對我來說它解決了這個問題。

如果您的回答說 express 未定義,則在您的 cmd 或 bash 終端中,使用以下命令:-

$ npm install express

安裝成功完成后,使用以下命令需要 express 模塊:-

const express=require('express');

運行你的代碼。 請記住首先在本地主機服務器中嘗試。 將端口偵聽器添加到您的代碼中並嘗試一下。

暫無
暫無

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

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