node.js - View 文件夹中的 angularjs index.html

标签 node.js angularjs express

我有点困惑。使用 Node

文件夹结构图片附后。

如果我将 index.html 放在 Client 文件夹的根目录下,一切正常。

另一方面,如果我将 index.html 移动到 views 文件夹中,就像在图像中那样,那么 js 文件不会加载,但 index.html 正在加载。

Nodejs - server.js

app.configure(function () {
    app.set('port', process.env.PORT || 3000);

    app.use(express.favicon());
    app.use(express.cookieParser());
    app.use(express.bodyParser());
    app.use(express.logger('dev'));  //tiny, short, default
    app.use(express.methodOverride());
    app.use(express.cookieSession({secret: "sdfr"}));

    //app.set('views', __dirname + '/client/views/');
    app.use(express.static(__dirname + '/client/views'));

});

app.js

app.config(['$routeProvider', function ($routeProvider) {

        $routeProvider.when('/',
            {
                templateUrl: 'partials/home.html',
                controller: 'HomeCtrl'
            });
        $routeProvider.when('/login',
            {
                templateUrl: 'partials/login.html',
                controller: 'LoginCtrl'
            });
        $routeProvider.when('/register',
            {
                templateUrl: 'partials/register.html',
                controller: 'RegisterCtrl'
            });

        $routeProvider.when('/404',
            {
                templateUrl: 'partials/404.html'
            });
        $routeProvider.otherwise({redirectTo: '/404'});

        //$locationProvider.html5Mode(true);

    }])

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html ng-app="contactManager">
<head>
    <meta charset="utf-8">
    <title>Angular Demo</title>
</head>

<body>


<a href="#/">Home</a><br/>
<a href="#/login">Login</a><br/>
<a href="#/register">Register</a><br/>
<a href="#/private">Private</a><br/>
<a href="#/admin">Admin</a><br/>
<a href="#/404">404</a><br/>

<div>
    <div ng-view></div>
</div>

<script src="../lib/vendor/angularjs/1.1.5/angular.min.js"></script>

<script src="../js/app.js"></script>
<script src="../js/controllers.js"></script>

</body>

Folder Structure

Error

最佳答案

目前您没有在 express.static 中包含 JS .包含的 JS 源代码位于 ../js从你的 index.html 文件哪里也去不了,因为 client/viewsexpress.static 提供的唯一目录.

您应该只将整个客户端包含在您的静态中,否则您必须将每个目录包含在您的静态提供程序中。

app.use(express.static(__dirname + '/client/views'));意味着您正在提供/client/views 中的任何内容,但不在该目录之外。

app.use(express.static(__dirname + '/client/js'));将允许您提供 JS 文件夹,但它将在根目录下访问。您可以使用两个静态提供程序,但在发生冲突时第一个将获胜。你也可以做 app.use(express.static('/js', __dirname + '/client/js'));你们都可以在 yoursite.com/js 访问客户端/js但这对我来说似乎很奇怪。

在此处阅读有关使用 express.static 的信息:http://expressjs.com/api.html#middleware

关于node.js - View 文件夹中的 angularjs index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17026328/

相关文章:

css - ExpressJS morgan 只记录路由请求

javascript - Express.js - 请求者域/IP 可靠性

node.js - 在我的 React api 中发送 header 后无法设置 header

javascript - 清理数据以防止 XSS

node.js - 管理数据库中不断变化的数据

ajax - $routeProvider : templateUrl requests with X-Requested-With header

node.js - 将本地数组从 Express 传递到 Javascript

node.js - 如何修复 "@types/node/index.d.ts is not a module"?

angularjs - Uncss 忽略选项不起作用

javascript - 将图像从计算机上传到 Fabric.JS Canvas