[英]“Cannot find module 'html' error” on Express Angular Node Template Render
我正在使用ui-router
为AngularJS构建一个webapp来处理我通过$stateProvider
路由,以便只在ui-view
呈现各种状态。
我有一个server.js
文件,希望渲染一个Web应用程序将基于的初始脚手架(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;
为了给你一个参考,在MEANJS中,路由/*
被定义为:
app.get('/*', function(req,res) {
res.render('index'); // without extension
});
它就像在你的配置中index.html
被解释为模块名称。 尝试删除文件扩展名为'index'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.