当我尝试提供静态文件时,未定义Node JS Express

时间:2016-04-25 15:55:39

标签: javascript node.js express

我正试图通过" 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

有人可以告诉我为什么会这样吗?

4 个答案:

答案 0 :(得分:10)

你忘了导入快递。

您还应该将非静态文件移到“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});
 });

答案 1 :(得分:4)

在您的代码中,您尚未声明任何名为express的变量。没有名为express的变量如何调用它的变量/函数/键。

要使用express./anything/,您必须在代码中声明 express 变量。可以通过

完成
{{1}}

答案 2 :(得分:0)

在Webstorm中,如果我使用过,则无法使用:

const express = require('express');

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

也许与Webstorm有关,也许不是一个“好”答案,但是对我来说,它可以解决此问题。

答案 3 :(得分:0)

如果你的回答说 express 没有定义,那么在你的 cmd 或 bash 终端中, 使用以下命令:-

$ npm install express

安装成功完成后,使用以下命令要求 express 模块:-

const express=require('express');

运行你的代码。记得先试试 本地主机服务器。在您的代码中添加端口侦听器并尝试一下。