AngularJS的$ routeProvider templateUrl总是使用Express返回404

所以问题是,AngularJS的$routeProvider/ngRoute不能正常工作,因为我需要它。 我无法得到它的路线显示相应的.html页面。 我总是得到GET http://localhost:3000/home.html 404 (Not Found)当我尝试在我的index.ejs页面加载模板。

我已经尝试了多种path来获得.html加载,但我没有成功。 我甚至创build了应用程序中每个文件夹的home.html ,看看它是否会抓住任何东西,但没有任何工作。 当直接注入html时, ng-include也不起作用。

/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都有简单的代码行用于testing目的。 例如: <h1> This is home.html </h1>

文件夹结构

 app.js public/ |-vendor/ |-angular/ | |-angularApp.js views/ |-index.ejs | |-index/ | |-home.html | |-faq.html | |-team.html 

Node / Express从“公共”文件夹静态地提供一切服务。 您需要设置所有相对于公共目录的URL。您的索引文件夹应该被移入公共目录。

 app.js public/ |-vendor/ |-angular/ | |-angularApp.js |views/ | |-index/ | | |-home.html | | |-faq.html | | |-team.html views/ |-index.ejs 

这个文件夹结构应该工作。 还解决这个问题:

  when('/', { templateUrl: '/views/index/home.html' })