【发布时间】:2016-03-10 20:54:48
【问题描述】:
所以问题是 AngularJS 的 $routeProvider/ngRoute 没有按我的需要工作。我无法让它在其路线上显示相应的.html 页面。当我尝试在我的index.ejs 页面中加载模板时,我总是收到GET http://localhost:3000/home.html 404 (Not Found)。
我尝试了多种路径来加载.html,但我没有成功。我什至为应用程序中的每个文件夹创建了home.html,看看它是否会抓取任何东西,但没有任何效果。 ng-include 直接注入 html 时也不起作用。
/app.js 简化:原始代码使用express.router()
var express = require('express');
var app = express();
var path = require('path');
var ejs = require('ejs');
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req,res,next) {
res.render('index', { page: 'index' });
});
app.listen(3000,function(){ console.log('3k'); });
/views/index.ejs
<!DOCTYPE html>
<html lang="en" ng-app="App">
<head>
<meta charset="UTF-8">
<title>WHY???</title>
</head>
<body>
<div class="main">
<div ng-view></div>
</div>
<script src="/vendor/angular/angular.js"></script>
<script src="/vendor/angular-route/angular-route.js"></script>
<script src="/angular/angularApp.js"></script>
</body>
</html>
/public/angular/angularApp.js
var App = angular.module('App',['ngRoute']);
App.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/index/home.html'
})
.when('/team', {
templateUrl: '/views/index/team.html'
})
.when('/faq', {
templateUrl: '/views/index/faq.html'
})
.otherwise({
redirectTo: '/'
})
}]);
home.html, team.html, and faq.html 都有用于测试目的的简单代码行。示例:<h1> This is home.html </h1>
文件夹结构
app.js
public/
|-vendor/
|-angular/
| |-angularApp.js
views/
|-index.ejs
|
|-index/
| |-home.html
| |-faq.html
| |-team.html
【问题讨论】:
-
这似乎是一个路径问题..您必须检查您的视图的正确路径..
-
@Ved 我该怎么做?我所知道的是 express 的静态视图路径设置为
views。除此之外,我不知道如何检查 AngularJS 的当前搜索路径。 -
app.get('/', function(req, res) { res.sendfile('./path/index.html'); });试试这个。
-
你能发布你的文件夹结构吗?
-
views/ 和 public/ 是否与 app.js 处于同一级别?
标签: javascript angularjs node.js ejs