#javascript #html #angularjs #express
#javascript #HTML #angularjs #экспресс
Вопрос:
У меня проблема с angular. Мой код angular отлично работает, когда я запускаю его один, но не работает, когда я обращаюсь к нему на localhost с помощью express. Что происходит, так это то, что он отображает только HTML-файл. мой серверный код : *
var express = require('express'),
app = express();
app.get('/', function(req, res) {
res.sendfile('./app/client/main.html');
});
app.listen(3000, function() {
console.log('I'm listening...');
})
мой код контроллера angular является
var app = angular.module('tiks', []);
app.controller('mainController', function($scope){
$scope.posts = [];
$scope.newPost = {created_by: '', text: '', create_at: ''};
$scope.post = function(){
$scope.newPost.created_at = Date.now();
$scope.posts.push($scope.newPost);
$scope.newPost = {created_by: '', text: '', created_at: ''};
};
});
и ангуляризованный HTML-код является
<!--main.html-->
<!doctype html>
<html>
<head>
<title>Tiks</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
<script src="javascripts/tiks.js"></script>
</head>
<body ng-app="tiks">
<div id='main' ng-controller="mainController">
<form ng-Submit="post()">
<input required type="text" placeholder="Your name" ng-model="newPost.created_by" />
<textarea required maxlength="200" rows="3" placeholder="Say something" ng-model="newPost.text"></textarea>
<input class="button" type="submit" value="Chirp!" />
</form>
<div id="post-stream">
<h4>Tiks Feed</h4>
<div class='post' ng-repeat="post in posts | orderBy:'created_at':true" ng-class-odd="'odd'" ng-class-even="'even'">
<p>{{post.created_by}} says {{post.text}} at {{post.created_at}}</p>
</div>
</div>
</div>
</div>
</body>
</html>
пожалуйста, помогите
Комментарии:
1. Вы не указываете express обслуживать ваш статический контент expressjs.com/en/starter/static-files.html
Ответ №1:
Ваш HTML запрашивает запрос javascripts/tiks.js
в script
теге, но на вашем сервере нет маршрута, настроенного для его обслуживания.
Попробуйте проверить выполняемые запросы, например, с помощью сетевой вкладки инструментов разработчика Google Chrome, и вы, вероятно, увидите 404
ошибку при запросе .js
файла.
Вы должны использовать express.static для обслуживания файлов из папки вместо того, чтобы определять конкретные ресурсы по отдельности, как вы делаете для ./app/client/main.html
.
app.use('/', express.static(__dirname '/app/client/'));
тогда вам пришлось бы получить доступ http://localhost/main.html
, чтобы получить к нему доступ.
Комментарии:
1. Вы должны предложить, как это исправить, то есть использовать промежуточное программное обеспечение для обработки статических файлов expressjs.com/en/starter/static-files.html
2. 10x за ваш ответ, как мне добавить маршрут?
3. хммм, хорошо, я отредактировал с помощью
/
параметра, чтобы сделать его более понятным4. я добавил app.use(express.static(‘./app / client / javascripts’)); в свой код на сервере, но безуспешно
5. Вы поступили с
/
параметром так, как это происходит сейчас? (Я отредактировал ответ)