无法链接到我的MEAN堆栈应用程序中的其他HTML页面

时间:2016-04-25 23:47:12

标签: angularjs node.js mongodb express mean-stack

所以我一直在做一些关于创建Mean堆栈应用程序的教程,直到现在我已经设法创建了一个单页应用程序,但是当我尝试链接多个html页面时,除了index.html,它要么返回一个CAN NOT GET页面,要么根本不做任何事情。我是初学者,所以任何输入都会很棒。

这是文件结构:

enter image description here

这是我的Server.js:

var express           = require('express'),
    app               = express(),
    bodyParser        = require('body-parser'),
    mongoose          = require('mongoose'),
    signupController = require('./server/controllers/signup-controller');


mongoose.connect('mongodb://localhost:27017/shopialmedia');

app.use(bodyParser());

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/client/views/index.html');
});


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


//REST API
app.get('/api/users', signupController.list);
app.post('/api/users', signupController.create);

app.listen(8080, function() {
  console.log('I\'m Listening...');
})

我很确定它与res.sendFile有关但正如我所说,我只是一个初学者,所以我不知道该怎么写。我试过app.use(express.static(' ../ client / views'));但无济于事。无论如何,再次任何输入将不胜感激。提前致谢。

编辑:此处还有index.html,如果可以提供帮助:

<!doctype html>
<html ng-app = "signupApp">
<head>
    <!-- META -->


    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"><!-- Optimize mobile viewport -->

    <title>Welcome to Shopial Media</title>
    <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"><!-- load bootstrap -->
    <style>
        html                    { overflow-y:scroll; }
        body                    { padding-top:50px; }
    </style>


</head>

<body style="background-color:lightgrey;">


<a class="btn btn-primary" href= "product.html" role="button">Products</a>
<a2 class="btn btn-primary" href= "offers.html" role="button">Offers</a2>
<a3 class="btn btn-primary" href= "search.html" role="button">Search</a3>

<div class="jumbotron text-center">
            <h1>Welcome to ShopialMedia</h1>
        </div>


<h2> Sign up if you haven't already </h2>

<div ng-controller = "signupController">
<form ng-submit = "createUser()"> 
<label> Email : </label>
<input type="text" placeholder="Enter your Email" ng-model="userEmail" id="textEmail"></input>
<BR>
<label> Password: </label>
<input type="text" placeholder="Enter your password" ng-model="userPass" id="textPass"></input>
<BR>
<label> First Name: </label>
<input type="text" placeholder="Enter your First Name" ng-model="userFName" id=t extFname></input>
<BR>
<label> Last Name : </label>
<input type="text" placeholder="Enter your Last Name" ng-model="userLName" id=t extLname></input>
<BR>
<label> Age : </label>
<input type="text" placeholder="Enter your Age" ng-model="userAge" id=t extAge></input>
<BR>
<button type="submit" ng-click="signup()"> Sign Up </button>
</form>
</div>

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
      <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-resource.js"></script>
      <script type="text/javascript" src="/js/app.js"></script>
      <script type="text/javascript" src="/js/controllers/signup-controller.js"></script>

</body>

2 个答案:

答案 0 :(得分:0)

您目前仅支持根导航(/)以及signupController.list处理的路由列表(我们无法看到)。如果您想要支持另一个页面,可以为其添加一个处理程序app.get('/about', function() {});,然后当用户导航到该路径时,您将获得该路径的视图。请注意,这些是服务器端视图,而不是客户端(角度)。

答案 1 :(得分:0)

虽然我没有看到客户端路由文件,但看不到控制器文件的内容。

您可能希望使用stateprovider或routeprovider,具体取决于您的偏好。

大致类似的东西;

$stateProvider reference [here][1]

    // HOME STATES AND NESTED VIEWS ========================================
    .state('home', {
        url: '/home',
        templateUrl: 'partial-home.html'
    })

    // nested list with custom controller
    .state('home.list', {
        url: '/list',
        templateUrl: 'partial-home-list.html',
        controller: function($scope) {
            $scope.dogs = ['Bernese', 'Husky', 'Goldendoodle'];
        }
    })

    // nested list with just some random string data
    .state('home.paragraph', {
        url: '/paragraph',
        template: 'I could sure use a drink right now.'
    })

或$ routeParams参考here

angular.module('ngRouteExample', ['ngRoute'])

 .controller('MainController', function($scope, $route, $routeParams, $location) {
     $scope.$route = $route;
     $scope.$location = $location;
     $scope.$routeParams = $routeParams;
 })

 .controller('BookController', function($scope, $routeParams) {
     $scope.name = "BookController";
     $scope.params = $routeParams;
 })

 .controller('ChapterController', function($scope, $routeParams) {
     $scope.name = "ChapterController";
     $scope.params = $routeParams;
 })

.config(function($routeProvider, $locationProvider) {
  $routeProvider
   .when('/Book/:bookId', {
    templateUrl: 'book.html',
    controller: 'BookController',
    resolve: {
      // I will cause a 1 second delay
      delay: function($q, $timeout) {
        var delay = $q.defer();
        $timeout(delay.resolve, 1000);
        return delay.promise;
      }
    }
  })
  .when('/Book/:bookId/ch/:chapterId', {
    templateUrl: 'chapter.html',
    controller: 'ChapterController'
  });

  // configure html5 to get links working on jsfiddle
  $locationProvider.html5Mode(true);
});