1
上找不到模塊'html'錯誤」我正在構建一個webapp,使用ui-router
爲AngularJS處理我通過$stateProvider
的路由,以便只有各種狀態才能在ui-view
中呈現。「在快速角度節點模板Render
我有一個server.js
文件,希望呈現Web應用程序將基於的初始腳手架(top-nav,footer..etc。),並且我希望所有請求都使用此模板加載並填充每個單個頁面使用模板。
但是,我不斷收到ERROR: Cannot find module 'html'
。
我挖過了stackoverflow,也嘗試安裝EJS,以便我可以呈現我的index.html頁面,但它仍然無法正常工作。
什麼是最好的方式來提供一個靜態html模板,並有角度ui路由器做路由的其餘部分?
這裏有兩個文件:
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進行渲染?我的建議,切換到哈巴狗。很容易。我不是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文件的請求。其中之一可能是包含「html」模塊的文件。在設置節點配置時,你需要考慮你的靜態目錄,有很多問題和答案顯示如何完成。 – Claies