NodeJS w / Express错误:无法GET /
这就是我所拥有的,文件名“default.htm”实际上是存在的,并在使用NodeJS执行readFile时加载。
var express = require('express'); var app = express(); app.use(express.static(__dirname + '/default.htm')); app.listen(process.env.PORT);
错误(在浏览器中):
Cannot GET /
你通常想渲染这样的模板:
app.get('/', function(req, res){ res.render('index.ejs'); });
不过,你也可以提供静态内容 – 这样做使用:
app.use(express.static(__dirname + '/public'));
现在,项目的/public
目录中的所有内容都将作为站点根目录中的静态内容提供,例如,如果将default.htm
放置在公用文件夹中(如果可以访问/default.htm
通过快速API和连接静态中间件文档了解更多信息。
你需要定义一个根路由。
app.get('/', function(req, res) { // do something here. });
哦,你不能在express.static
指定一个文件。 它需要是一个目录。 app.get('/'....
将负责渲染该文件,你可以使用快速的渲染方法,但是你必须添加一些configuration选项来显示你的视图在哪里,传统上app/views/
文件夹。
你在哪里得到“/”的方法?
你也无法直接在Express.First静态html提供你需要configuration它。
app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set("view options", {layout: false}); //This one does the trick for rendering static html app.engine('html', require('ejs').renderFile); app.use(app.router); });
现在添加你的get方法。
app.get('/', function(req, res) { res.render('default.htm'); });
我发现自己在这个网页上,因为我也收到了Cannot GET/
消息。 我的情况不同,因为我正在使用express.static()
来定位一个文件夹,就像以前的答案中提供的那样,而不是像OP那样的文件。
通过Express'文档挖掘后发现的是, express.static()
将其索引文件定义为index.html
,而我的文件名为index.htm
。
为了配合OP的问题,有两个select:
1:使用其他答案中build议的代码
app.use(express.static(__dirname));
然后将default.htm
文件重命名为index.html
要么
2:调用express.static()
时将index
属性添加到所需的索引文件中:
app.use(express.static(__dirname, { index: 'default.htm' }));
我有同样的问题,所以这就是我想出的。 当我运行node server.js
时,这就是我的文件夹结构
app/ index.html server.js
打印完__dirname
path后,我意识到__dirname
path是我的服务器运行的地方( app/
)。
所以,你的问题的答案是这样的:
如果您的server.js
文件与您要呈现的文件在同一文件夹中,那么
app.use(express.static(__dirname + '/default.htm'));
实际上应该是
app.use(express.static(__dirname));
唯一一次你想使用原来的语法,如果你有像这样的文件夹树:
app/ index.html server.js
其中index.html
位于app/
目录中,而server.js
位于根目录(即与app/
目录相同的级别)。
总体而言,您的代码可能如下所示:
var express = require('express'); var app = express(); app.use(express.static(__dirname)); app.listen(process.env.PORT);
我正面临与问题中提到的相同的问题。 以下步骤解决了我的问题。
我使用以下步骤升级了nodejs包链接
-
清除NPM的caching:
npm cache clean -f
-
安装一个名叫'n'的小助手
npm install -gn
然后我去了node.js网站,下载了最新的节点js包,安装好了,问题解决了。
我遇到过同样的问题。 通过下面的小改动来解决它。
var express = require('express'); var app = express(); app.use(express.static(path.join(__dirname, 'public')));
从这里获得帮助(ExpressJS文档 – 提供静态文件)。
var path = require('path');
更改app.use(express.static(__dirname + '/default.htm'));
( app.use(express.static(path.join(__dirname + '/default.htm')));
。
另外,请确保将其指向您的default.html的正确path。