自定义模块未在nodejs express app中定义

时间:2015-11-17 13:15:33

标签: node.js express ejs node-modules

我们为快递应用制作了自定义模块,但收到此错误somename is not defined

这是我们的代码

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var somename = require('./somename/common');
// console.log(wahapar.ucfirst("d"));
var routes = require('./routes/index');
var users = require('./routes/users');

common.js

module.exports = {
    ucfirst: function(str){
        //  discuss at: http://phpjs.org/functions/ucfirst/
        // original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // bugfixed by: Onno Marsman
        // improved by: Brett Zamir (http://brett-zamir.me)
        //   example 1: ucfirst('kevin van zonneveld');
        //   returns 1: 'Kevin van zonneveld'
        str += '';
        var f = str.charAt(0).toUpperCase();
        return f + str.substr(1);
    },
};

ejs view

<%= somename.ucfirst("this is a string") %>

console.log(somename.ucfirst("d"));在终端显示输出

1 个答案:

答案 0 :(得分:1)

您应该将模块作为本地变量传递到express app。

app.locals.somename = require('./somename/common');

然后你就可以使用内部的ejs模板了。

来自快递文档app.locals

  

app.locals对象是一个JavaScript对象,其属性是   应用程序中的局部变量。

     

设置后,app.locals属性的值将持续存在   应用程序的生命周期,与res.locals属性相反   仅在请求的生命周期内有效。

     

您可以访问在其中呈现的模板中的局部变量   应用。这对于提供辅助函数很有用   模板,以及应用级数据。当地人有   中间件通过req.app.locals