electron 在javascript中通过process.env定义属性

svujldwt  于 2022-12-25  发布在  Electron
关注(0)|答案(1)|浏览(424)

我是JavaScript新手,遇到了瓶颈。我正在编写我的第一个“真实的的”电子应用程序,希望通过sftp连接。(更具体地说,是ssh 2-sftp-client)当我像下面这样设置连接时:

sftp.connect({
  host: '192.168.76.173',
  port: '22',
  username: 'Backup',
  password: 'PasswordInPlainText'
}).then(() => {
  return sftp.list('/Backups/Server');
}).then(data => {
  console.log(data, 'the data info');
}).catch(err => {
  console.log(err, 'catch error');
});

一切都像一个魅力。但是当我试图在一个.env文件中“隐藏”我的凭据时:

sftp.connect({
    host: process.env.HOST,
    port: process.env.PORT,
    username: process.env.USERNAME,
    password: process.env.PASSWORD
}).then(() => {
  return sftp.list('/Backups/Server');
}).then(data => {
  console.log(data, 'the data info');
}).catch(err => {
  console.log(err, 'catch error');
});

我收到错误消息:
错误:连接:获取连接:所有配置的身份验证方法均失败
我查过了

console.log("Host to connect: "+ process.env.HOST)

,正确的输出为:
要连接的主机:192.168.76.173
.env文件的内容为

HOST='192.168.76.173'
    PORT='22'
    USERNAME='Backup'
    PASSWORD='PasswordInPlainText'

这是我第一次使用环境变量,所以我猜我误解了什么,或者JavaScript属性不能用字符串这样定义。

xqkwcwgp

xqkwcwgp1#

您的问题是默认情况下NodeJS不支持.env文件,并且您可能已经有一些env变量具有相同的名称和不同的值(可能在系统中定义)。
您可以使用像dotenv这样的NPM包,也可以自己解析文件的内容。
你也可以这样测试它:

// Place this code before you use the ENV variables.
// Replace the `<variables>` with the real data
// and test if your code works with the ENV variables. 
process.env.HOST = '<your host ip>';
process.env.PORT = '<your port>';
process.env.USERNAME = '<username>';
process.env.PASSWORD = '<password>';

相关问题