[英]AngularJS's $routeProvider templateUrl is always returning 404 using Express
所以問題是AngularJS的$routeProvider/ngRoute
不能正常工作。 我無法讓它在其路線上顯示相應的.html
頁面。 當我嘗試在index.ejs
頁面中加載模板時,我總是得到GET http://localhost:3000/home.html 404 (Not Found)
。
我嘗試了很多路徑來獲取.html
加載,但我還沒有成功。 我甚至為應用程序中的每個文件夾創建了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
都有簡單的代碼行用於測試目的。 示例: <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從“public”文件夾靜態提供所有內容。 您需要設置相對於公共目錄的所有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'
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.