【发布时间】:2016-09-17 18:21:56
【问题描述】:
我正在使用 AngularJS + Hapi.js 试图创建一个简单的 ng-view 示例,但 AngularJS 看不到我的自定义脚本。简单地使用 src for app.js 在 Chrome 控制台中给了我一个错误。我尝试使用 ng-src,但没有任何反应。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script ng-src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script ng-src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-animate.min.js"></script>
<script ng-src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-aria.min.js"></script>
<script ng-src="https://ajax.googleapis.com/ajax/libs/angular_material/1.0.7/angular-material.min.js"></script>
</head>
<body ng-app="testApp">
<div ng-view></div>
<script src="app/app.js"></script>
</body>
</html>
app.js
'use strict'
var app = angular.module('testApp', ['ngRoute']);
app.config(['$routeProvider'], function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'main.html',
controller: 'MainCtrl'
});
});
app.controller('MainCtrl', function($scope){
$scope.message = "Hello!";
}])
main.html
<h1>
{{ message }}
</h1>
server.js
'use strict';
const Hapi = require('hapi');
const Hoek = require('hoek');
const Handlebars = require('handlebars');
const server = new Hapi.Server();
server.connection({ port: 3000 });
server.register(require('vision'), (err) => {
Hoek.assert(!err, err);
server.views({
engines: {
html: Handlebars
},
path: __dirname,
layout: 'index'
});
server.route({
method: 'GET',
path: '/',
handler: {
view: 'index'
}
});
});
server.start((err) => {
if (err) {
throw err;
}
console.log(`Server running at: 3000`);
});
应用结构:
server.js
index.html
- app
app.js
main.html
【问题讨论】:
-
控制台抛出什么错误?
-
"localhost:3000/app/app.js 加载资源失败:net::ERR_CONNECTION_REFUSED"
-
这与 HapiJS 有关。使用
inert(hapijs.com/tutorials/serving-files) 包提供文件,而不是仅提供index.html。在您的服务器代码中,您只公开了 HTML 文件;仅此而已,这就是 app.js 失败的原因。 -
由于最初的 4
script[src],因此存在 Angular 和插件。但后来app.js脚本标签无法获取 app.js 文件,因此您的应用无法运行。 -
在 head 标签中你没有提供 'angular-route.js' 文件
标签: javascript angularjs hapijs