我们为快递应用制作了自定义模块,但收到此错误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"));
在终端显示输出
答案 0 :(得分:1)
您应该将模块作为本地变量传递到express app。
app.locals.somename = require('./somename/common');
然后你就可以使用内部的ejs模板了。
来自快递文档app.locals
app.locals对象是一个JavaScript对象,其属性是 应用程序中的局部变量。
设置后,app.locals属性的值将持续存在 应用程序的生命周期,与res.locals属性相反 仅在请求的生命周期内有效。
您可以访问在其中呈现的模板中的局部变量 应用。这对于提供辅助函数很有用 模板,以及应用级数据。当地人有 中间件通过req.app.locals