gpt4 book ai didi

node.js - eval 到底是如何与 Nodejs 一起工作的?

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:49 28 4
gpt4 key购买 nike

假设我愿意:

eval(
db_config = {
host: 'localhost',
user: 'root',
database: 'forum',
password: 'test'
}
);

var gamefunctions = require('gamefunctions.js');

我可以在 gamefunctions.js 内的任何位置使用 db_config,而无需通过参数传递它。这非常整洁。但是,这是不好的做法吗?

我问这个的原因是因为如果我这样做:

 var db_config = {
host: 'localhost',
user: 'root',
database: 'forum',
password: 'test'
}


var gamefunctions = require('gamefunctions.js');
每当我在 gamefunctions.js 中使用

db_config 时,它就会变得未定义。我必须通过每个不同函数的参数传递它,这看起来就像评估它首先会节省时间和代码,这有什么缺点吗?

eval 基本上只是在全局范围内为您定义变量,以便它们可以在 Nodejs 中的任何文件中使用吗?

最佳答案

你做错了两件事,对此有更优雅的解决方案。

为了解释你做错了什么,首先是全局变量的使用。其次,您在代码中存储了敏感信息 - 您的数据库密码!此外,它也不会很便携。假设您想在另一台具有其他数据库凭据的计算机上运行它,您最终将不必要地更改代码。

您需要将其存储为环境变量。如果您最终托管它,某些环境会自动为您设置这些设置,以便您可以在应用程序中使用它们。例如,openshift 将有一个 $OPENSHIFT_MONGODB_DB_HOST,它会告诉您在应用程序中使用它来连接到其数据库。

您需要创建一个单独的文件来存储您可以从其他文件中获取的db_config

因此,您可以创建一个如下所示的db_config.js

var config = {};
config.host = process.env.HOST || 'localhost';
config.user = process.env.USER || 'root';
config.password = process.env.password;
module.exports = config;

然后您可以安全地从控制台传递密码等敏感信息

$ password=pass
$ node index.js

至于在您的 gamefunctions.js 中包含这些信息,您所要做的就是需要它

var db_config = require('./db_config');

关于node.js - eval 到底是如何与 Nodejs 一起工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30534269/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com