在Express Angular Node模板渲染中出现"找不到模块'html'的错误"。
在Express Angular Node模板渲染中出现"找不到模块'html'的错误"。
我正在使用AngularJS的ui-router
构建一个Web应用程序来处理我的路由,通过$stateProvider
只渲染ui-view
中的各个状态。
我有一个server.js
文件,希望渲染一个初始的框架(顶部导航,页脚等),Web应用程序将以此为基础,并希望所有请求都加载这个模板,并使用模板填充每个单独的页面。
然而,我一直收到ERROR: Cannot find module 'html'
的错误。
我已经在stackoverflow上仔细查找,并尝试安装EJS,以便渲染我的index.html页面,但仍然没有成功。
最好的方法是如何提供一个静态的HTML模板,并让Angular ui-router处理其余的路由呢?
以下是两个文件:
server.js
var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var routes = require('server/routes'); // 设置端口 var PORT = process.env.PORT || 3000; // 渲染配置 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'; // 工厂 import todoFactory from 'factories/todo-factory'; // 控制器 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 // 主页 .state('home', { url: '/', templateUrl: 'views/index.html', }) // 注册 .state('signup', { url: '/signup', templateUrl: 'views/signup/signup.html', controller: signupController }) // 登录 .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 // 如果以下依赖项都成功解析,您可以访问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;