繁体   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