簡體   English   中英

“在Express Angular Node Template Render上找不到模塊'html'錯誤”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM