Javascript 如何定义一个;常数;并在NodeJS中的任何地方访问它

Javascript 如何定义一个;常数;并在NodeJS中的任何地方访问它,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我在处理node.js,在我的(所谓的)项目中,我偶然发现了一个问题,虽然不是完全吓人,但让我非常恼火 我每天都在使用PHP框架CodeIgniter,CodeIgniter(可能还有其他任何PHP框架)的功能是定义基本URL,然后通过一个简单的函数可以访问任何地方(库、控制器、模型、视图…)。相当标准的东西 现在,在Express中,我找不到同样的方法。我漫无目的地问了一些类似的问题,通常答案是关于res.locals或app.locals,这是行不通的。我正在使用Express 3.1.1和

我在处理node.js,在我的(所谓的)项目中,我偶然发现了一个问题,虽然不是完全吓人,但让我非常恼火

我每天都在使用PHP框架CodeIgniter,CodeIgniter(可能还有其他任何PHP框架)的功能是定义基本URL,然后通过一个简单的函数可以访问任何地方(库、控制器、模型、视图…)。相当标准的东西

现在,在Express中,我找不到同样的方法。我漫无目的地问了一些类似的问题,通常答案是关于
res.locals
app.locals
,这是行不通的。我正在使用Express 3.1.1和ejs locals作为模板引擎。我知道我可以定义一个全局变量,然后将其传递给render函数,但我想知道是否有一种方法可以在任何地方访问它。我相信问题可能出在模板引擎上,但是,如果有第二种意见就好了


谢谢。

在app.js中只需更改此项

 var myVar = "only in file";
有此(无“var”)


最好是以防万一。

app.当地人通常都会来。它怎么不起作用?你能发布你的应用程序设置吗?我定义它就像
。。。app.locals.base_url='1http://192.168.1.71:3000'; ...和ejs局部变量模板内部
var socket=io.connect()但它只是抛出了一个500引用错误。你在app.listen之前分配了这个吗?另外,渲染模板的调用看起来如何?(即:res.render('mytemplate',{});)如果您像这样直接传递它,则base_url在模板中是否起作用:res.render('mytemplate',{base_url:'})?是的,它是在app.configure中分配的。与其他变量一样,它在直接传递时也可以工作。它在那里正常工作。这可能是ejs本地人处理模板的方式。我也使用“ejs本地人”,app.locals工作正常。我唯一能想到的另一件事是确保它是在app.router之前设置的,并且不要在res.render调用中传递另一个{locals:{}}对象。这会创建一个全局变量,这在node中是非常不受欢迎的。此外,global不能保证在任何地方都可用(像和模块这样的东西允许代码使用它们自己的全局对象运行)。我不知道…:O
 myVar = "everywhere";