AngularJSのui-router
を使用して私のルーティングを処理する$stateProvider
のwebappを構築し、さまざまな状態だけがui-view
に表示されるようにします。Express Angular Node Templateレンダリングでモジュール 'html'エラーが見つかりません
私はserver.js
ファイルを持っており、ウェブアプリケーションが基づいている最初の足場(top-nav、footer..etc。)をレンダリングしたいと希望しています。テンプレートを使って個々のページ。
しかし、私は得続けるERROR: Cannot find module 'html'
。
私はstackoverflowを通して掘り出して、EJSをインストールしてindex.htmlページを表示できるようにしましたが、まだ動作しませんでした。
スタティックなHTMLテンプレートを提供し、角度ui-routerを使用して残りのルーティングを行う最良の方法は何でしょうか?ここで
は二つのファイルです:
server.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var routes = require('server/routes');
// Set Port
var PORT = process.env.PORT || 3000;
// Rendering configuration
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(bodyParser.json());
routes(app);
app.get('/*', function(req,res) {
res.render('index.html');
});
app.listen(PORT, function() {
console.log('Server running on ' + PORT)
});
config.jsの
import angular from 'angular';
import uiRouter from 'angular-ui-router';
// Factories
import todoFactory from 'factories/todo-factory';
// Controllers
import todosController from 'controllers/todosController';
import profileController from 'controllers/profileController';
import signupController from 'controllers/signupController';
import signinController from 'controllers/signinController';
const app = angular.module('airporter', [uiRouter, todoFactory.name]);
app.config(($stateProvider, $urlRouterProvider, $locationProvider) => {
$urlRouterProvider.otherwise('/');
$stateProvider
// Homepage
.state('home', {
url: '/',
templateUrl: 'views/index.html',
})
// Sign Up
.state('signup', {
url: '/signup',
templateUrl: 'views/signup/signup.html',
controller: signupController
})
// Sign In
.state('signin', {
url: '/signin',
templateUrl: 'views/signin/signin.html',
controller: signinController
})
//
.state('profile', {
url: '/profile',
templateUrl: 'views/profile/profile.html',
controller: profileController,
resolve: {
// logincheck: checkLoggedin
// if the following dependencies are successfully resolved you can access profile
}
})
.state('todos', {
url: '/todos',
templateUrl: 'views/todos/todos.html',
controller: todosController
})
.state('about', {
url: '/about',
templateUrl: 'views/about/about.html'
});
$locationProvider.html5Mode(true);
});
export default app;
EJSでビューエンジンを設定し、HTMLをレンダリングに使用しているのはなぜですか?私の助言は、pugに切り替える。はるかに簡単です。私はEJSの専門家ではありませんが、HTMLページを指すべきですが、res.render( 'pages/index')のようなものです。おそらくそのエラーが表示されます。 – spa900
これは役に立ちますか? http://stackoverflow.com/questions/16111386/node-js-cannot-find-module-html – ppovoski
'app.get( '/ *'、function(req、res){ res.render( 'index.html '); }); 'すべてのリクエスト***に対して、' index.html'をレンダリングする必要があることを文字通りノードに伝えます。 ***他のファイル***が要求されると、 'index.html'がレンダリングされます。これには、スクリプトのリクエスト、部分的なリクエスト、CSSファイルのリクエストまでが含まれます。これらのうちの1つは '' html''モジュールを含むファイルでしょう。ノード構成を設定するときは、静的ディレクトリを考慮する必要があります。これがどのように行われているかを示す回答が複数あります。 – Claies