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

标签 javascript angularjs node.js ejs

所以问题是 AngularJS 的 $routeProvider/ngRoute没有按我的需要工作。我无法让它显示相应的 .html其路线上的页面。我总是得到 GET http://localhost:3000/home.html 404 (Not Found)当我尝试在我的 index.ejs 中加载模板时页。

我尝试了多种路径来获取 .html加载但我没有成功。我什至创建了 home.html对于应用程序中的每个文件夹,看看它是否会抓取任何东西但没有任何效果。 ng-include直接注入(inject) 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

最佳答案

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

app.js

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

views/
|-index.ejs

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

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

关于javascript - AngularJS 的 $routeProvider templateUrl 总是使用 Express 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113506/

相关文章:

Javascript - 如何将一个数字的所有第一位和最后一位数字相加,直到只剩下两位数字?

javascript - Express/AngularJs "angular is not defined"

scope - Angularjs,在路由之间传递范围

node.js - 使用node.js ForeverAgent

javascript - 带有 Node.js 请求模块的多个请求池

javascript - 如何整合代码 |使变量动态化

javascript - 如何为所有列拆分每列数组? (JavaScript)

angularjs - 如何创建一个 npm 脚本来运行多个命令来运行一些测试?

node.js - systemd日志每日汇总-linux

node.js - 与指定的 sslrootcert 连接的 Pg-Promise 问题