关于express的set和get的一个Nodejs问题

关于express的set和get的一个Nodejs问题

在configure中set一个key和一个值

pp.configure(function(){ app.set(‘photos’, __dirname + ‘/public/photos’); … });

然后想在 后面取出来用app.get(‘photos’),但是取出来的东西根本就是一堆不知所谓的东东。

《nodejs in action》这本书上的例子

哪位大神帮忙给指点一下哈。

4 回复

当然可以!关于Express中的app.setapp.get方法,它们主要用于设置和获取应用级别的配置属性。下面是一个详细的解答,包括示例代码。

示例代码

首先,我们需要创建一个简单的Express应用,并在其中使用app.setapp.get方法。

const express = require('express');
const app = express();

// 在configure中设置一个key和一个值
app.set('photos', __dirname + '/public/photos');

// 获取设置的值并打印出来
app.get('/', (req, res) => {
    const photosPath = app.get('photos');
    res.send(`Photos path is: ${photosPath}`);
});

// 启动服务器
const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});

解释

  1. 设置配置属性

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

    这行代码设置了名为photos的配置属性,并将其值设置为当前目录下的public/photos路径。

  2. 获取配置属性

    app.get('/', (req, res) => {
        const photosPath = app.get('photos');
        res.send(`Photos path is: ${photosPath}`);
    });
    

    在这个路由处理函数中,我们使用app.get('photos')来获取之前设置的photos属性值,并将该路径发送回客户端。

  3. 启动服务器

    const port = process.env.PORT || 3000;
    app.listen(port, () => {
        console.log(`Server is running on port ${port}`);
    });
    

    最后,我们启动服务器并监听指定端口(这里使用的是3000端口)。

常见问题及解决方法

  • 取出来的值是未知的或错误的:这可能是因为你在获取值时拼写错误,或者没有正确设置属性。确保你使用的键名完全一致,并且在设置属性时没有遗漏任何字符。

  • 检查环境变量:如果你的项目依赖于环境变量,确保这些变量已经被正确地设置。

通过以上示例和解释,你应该能够理解如何在Express应用中使用app.setapp.get方法来管理配置属性。希望这对你的问题有所帮助!


今天再试的时候,用app.set(‘photos’)和app.set(‘photos’,__dirname + ‘/public/photos’)或者其他的形式。最后app.get(‘photos’)得到的都是空的。用console。log输出,什么都没有

哦,console.log(app.set(‘photos’));是可以得到正确路径。呵呵,在后面的代码中用这个方法也可以得到。谢谢。

在Express应用中,app.setapp.get 方法用于设置和获取应用级别的配置变量。你在配置过程中使用 app.set 设置了一个名为 'photos' 的键,并将其值设为 __dirname + '/public/photos'

如果在后续的代码中通过 app.get('photos') 获取这个值时出现问题,那么问题可能出在以下几个方面:

  1. 环境或时机问题:确保在调用 app.get('photos') 获取该值之前,app.set('photos', ...) 已经执行并完成了设置。

  2. 路径问题:如果你获取到的是乱码或其他未知内容,可能是路径拼接时出现了错误,例如字符串引号不匹配。

下面提供一个完整的示例来演示如何正确地设置和获取配置变量:

const express = require('express');
const app = express();

// 设置 'photos' 配置变量
app.set('photos', __dirname + '/public/photos');

// 使用中间件输出 'photos' 的值
app.use((req, res, next) => {
    const photosPath = app.get('photos'); // 正确获取配置变量
    console.log("Photos Path:", photosPath); // 输出路径
    next();
});

// 路由处理
app.get('/', (req, res) => {
    res.send("Hello World!");
});

app.listen(3000, () => {
    console.log("Server is running on port 3000");
});

在这个示例中:

  • 我们首先使用 app.set 方法设置了 photos 配置变量。
  • 然后通过中间件函数来演示如何使用 app.get 获取这个配置变量的值,并打印出来。

确保你的代码结构类似上述结构,这样可以避免在获取配置变量时出现莫名的乱码或其他问题。如果依然存在问题,请检查是否有其他代码干扰了配置变量的设置或获取过程。

回到顶部