我正试图通过" 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
有人可以告诉我为什么会这样吗?
答案 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');
运行你的代码。记得先试试 本地主机服务器。在您的代码中添加端口侦听器并尝试一下。