我正在使用MEAN堆栈构建angularJS应用程序。我想创建一个catchall路由,它总是重定向到我的index.html文件,但是我也希望提供一些我在本地安装bower的依赖项。
使用我当前的配置,快递应用程序将所有公共文件作为html返回,因此我的javascript依赖项不起作用。如果我添加app.use(express.static('public'));
,则捕获路由将停止工作。知道我做错了吗?
这是我的server.js:
var config = require('./config');
//app configuration
// body parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
//CORS requests
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization');
next();
});
//log all requests to console
app.use(morgan('dev'));
//db
mongoose.connect(config.database);
//API routes
var apiRoutes = require('./app/routes/api')(app, express);
//register our routes
app.use('/api', apiRoutes);
app.use(express.static('public'));
//catchall route
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/public/app/views/index.html'));
});
//start the server
app.listen(config.port);
console.log('Running on: ' + config.port);
感谢您的帮助。
答案 0 :(得分:0)
尝试在“ / public”处托管公共文件,并在“包罗万象”路由后附加“ /”。
以下是我过去使用的内容
app.use('/public', express.static('public'));
// ... all other routes
//catch-all-else route
app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname + '/public/app/views/index.html'));
});