首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将app.local发送到路由文件

无法将app.local发送到路由文件
EN

Stack Overflow用户
提问于 2015-12-13 18:32:11
回答 2查看 686关注 0票数 9

所以,在我的express.js 4.13.3中。,在app.js文件中,我设置了一个app.local变量

app.set('multimedia', __dirname + '/public/multimedia');

然后在routes/settings.js中,我尝试访问这个变量,就像

代码语言:javascript
复制
var app = require('../app');
var dir = app.get('multimedia');

我得到了app.get is not a function

我也尝试过var dir = app.get.multimedia;var dir = app.locals('multimedia');var dir = app.locals.multimedia;,但仍然一无所获。

我在这里错过了什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-12-15 20:36:02

问题是,当调用required('../app')时,您还没有定义该做什么。您应该使用module.exports进行此操作,如下所示。尝试这些方法中的一种来解决这个问题。

方法1:

将这一行添加到app.js文件中。

代码语言:javascript
复制
module.exports = app;

这只需要在调用app时导出require('../app')。如果在require('routes/settings');中使用app.js,则应将该行放在require('routes/settings');之前,否则将无法工作。

方法2:

代码语言:javascript
复制
//change the `routes/settings.js` like this
module.exports = function (app) {//notice that you pass the app to this
    //............     
    var dir = app.get('multimedia');
    console.log(dir);
    //............
}

将这一行添加到app.js

代码语言:javascript
复制
require('routes/settings')(app);

现在,您应该能够使用app.get()而不存在任何问题。

示例:

代码语言:javascript
复制
//app.js
var express=require('express');

var app = express();

app.set('multimedia', __dirname + '/public/multimedia');

app.get('/',function(req,res){
  res.send('Hello World!');
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;
  console.log('Listening at http://%s:%s', host, port);
});

module.exports=app;

require('./settings');



//settings.js
var app= require('./app');

var dir = app.get('multimedia');

console.log(dir);

有关module.exports的更多详细信息可以找到这里

票数 2
EN

Stack Overflow用户

发布于 2015-12-22 15:56:20

在settings.js中

代码语言:javascript
复制
function settings(app) {
  console.log(app);
  // etc...
}

module.exports = settings;

在app.js中:

代码语言:javascript
复制
var settings = require('./settings'),
    express = require('express'),
    app = express(),
    server = require('http').createServer(app), 
    ...
    ...

settings(app);

基本上,您从要使用它们的地方导出函数,然后在app.js中要求这些文件。

样本项目:

server.js:

代码语言:javascript
复制
var settings= require('./settings'),
server = require('http');

settings(server);

settings.js:

代码语言:javascript
复制
function settings(server) {
  console.log("Hello");
  console.log(server);
}

module.exports = settings;

两个文件都在同一个文件夹中。要运行:节点服务器

结果:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34254744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档