dotenv 无法在全局安装的 dart 包中工作

问题描述 投票:0回答:1

我在我的 dart cli 项目中安装了包 dotenv,它似乎与 DotEnv()..load() 一起工作得很好,并使用 dart run bin/my_cli.dart 运行 bin dart 文件。但是一旦我用 dart

pub global activate
激活我的包,它就会停止工作并且找不到 env 文件。

当我查看 .pub-cache/global_packages 文件夹时,我注意到 .env 文件不存在。那么如何通过 .env 文件将我的自定义环境变量包含在全局安装的 dart cli 包中?

dart environment-variables command-line-interface dotenv
1个回答
0
投票

以下是使用 dart 命令行工具和全局包时的命令列表:

使包的可执行文件全局可用:

dart pub global activate <package>

(补充):

例如,假设您想使用 webdev 从命令行为您的 Dart Web 应用程序提供服务。

$ dart pub global activate webdev
$ webdev serve

(补充):

激活套餐

dart pub global activate [--noexecutables] [--executable=<name>] [--overwrite] <package> [version-constraint]

如果这不起作用,您可能需要设置您的路径

(补充):

在本地计算机上激活软件包

$ dart pub global activate --source path <path>

使用 activate --source path 激活本地的包 机器。以下示例激活秒表包 ~/dart 目录:

$ dart pub global activate --source path ~/dart/stopwatch

删除之前激活的软件包。

dart pub global deactivate <package>

列出全局激活的软件包。

dart pub global list

从全局激活的包运行可执行文件。

dart pub global run

(补充):

使用 dart pub global run 运行脚本

$ dart pub global run <package>:<executable> [args...]

来源:VS Code IDE 生成的输出,来自

dart pub global -h
,有关更多信息:dart pub global

有关

dart pub add <package>
命令的有用信息:

默认情况下,dart pub add 使用最新稳定版本的包 来自与您的 SDK 限制兼容的 pub.dev 网站,并且 依赖关系。例如,如果 0.13.3 是最新的稳定版本 http包,然后 dart pub add http 添加 http: ^0.13.3 下 pubspec.yaml 中的依赖项。来源:dart pub add

我做了什么:

PS C:\path_to_my_dart_cli_project\my_dart_cli_project>flutter pub add dotenv

如果确实有必要,我希望有人验证这一点,因为我们正在处理全局设置,因为我在使用 Dart 命令行工具方面没有丰富的经验。

dart pub global activate dotenv
dart pub global run dotenv:new  # create a .env file and add it to .gitignore
dart pub global run dotenv      # load the file and print only the file environment variables to stdout

我在 .env 文件中添加了一些值,即

ENV_DATA=FIRST_VALUE

然后,我得到了这个输出:

{ENV_DATA: FIRST_VALUE}

令人惊讶的是,在我的 test\my_dart_cli_project.dart 文件中,我这样做了:

import 'dart:io';

// import 'package:dotenv/dotenv.dart';

void main() {
  // var env = DotEnv(includePlatformEnvironment: true)..load();

  // p('read all vars? ${env.isEveryDefined(['foo', 'baz'])}');

  // p('foo=${env['foo']}');
  // p('baz=${env['baz']}');
  // p('your home directory is: ${env['HOME']}');

  // env.clear();
  // p('cleared!');

  // p('env has key foo? ${env.isDefined('foo')}');
  // p('env has key baz? ${env.isDefined('baz')}');
  // p('your home directory is still: ${env['HOME']}');
}

// p(String msg) => stdout.writeln(msg);

我仍然得到输出

{ENV_DATA: FIRST_VALUE}
,所以我将留给您根据您的用例进行自定义。

© www.soinside.com 2019 - 2024. All rights reserved.