我有一个目录结构:
projectName
| -.sencha/
| - app/
| - view
| - controller
| - store
| - saas
| - server/
| -server.js
| - index.html
| - bootstrap.js
| - app.js
I would like to start my app and serve index.html with node. So in server/server.js I have:
app.get('/', function(req, res) {
res.sendFile('index.html', { root: path.join(__dirname, '../') });
})
And this is working fine but after this my localhost throwing an error bootstrap.js is not found.
的index.html
<!DOCTYPE HTML>
<html manifest="">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="UTF-8">
<title>serverApp</title>
<!-- The line below must be kept intact for Sencha Cmd to build your application -->
<script id="microloader" type="text/javascript" src="bootstrap.js"></script>
</head>
<body></body>
</html>
那么你能告诉我如何解决这个问题吗? 或者你能为我提供一个很好的链接示例,它是在extjs,express,nodejs,mongodb中开发的。
答案 0 :(得分:1)
您应该重写一下文件结构以提供静态文件:
将此行添加到server.js
以提供public
文件夹中的静态文件:
app.use('/', express.static('public'));
将文件结构修改为:
projectName
| -.sencha/
| - app/
| - view
| - controller
| - store
| - saas
| - server/
| -server.js
| - public/
| - index.html
| - bootstrap.js
| - app.js
答案 1 :(得分:1)
我100%同意这个@Adam!此外,您应该将您的公共文件夹解析为绝对路径,这不是必须的,而是准则,以便我们不会受到打击......;)
您应该按@Adam建议重新构建您的应用,再加上
执行以下操作,它将以良好的指导方针解决您的问题。
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
//This will enable you to access it form '/'
app.use('/', express.static(__dirname + '/public', {index: "index.html"}));
// Rest of the stuff
然后,如果您将访问您设置和移植的网址,则可以访问。
建议使用express.static
来提供静态内容。
希望它有所帮助!