在 VS Code-debugger 中,如何在 nodejs 的 launch.json 中使用 envFile?

Posted

技术标签:

【中文标题】在 VS Code-debugger 中,如何在 nodejs 的 launch.json 中使用 envFile?【英文标题】:In VS Code-debugger, how do I use envFile in launch.json for nodejs? 【发布时间】:2019-10-04 07:08:57 【问题描述】:

我正在尝试在我的 nodejs 应用程序的 VS Code 中运行调试器。我正在使用 .env 文件来存储稍后使用 process.env 调用的环境变量。当我查找 launch.json 的 VS Code 文档时,它提到了加载 .envFile 的 envFile 选项。不幸的是,当我运行调试器时,这并没有加载文件。

launch.json:


    "version": "0.2.0",
    "configurations": [
        
            "type": "node",
            "request": "launch",
            "name": "RegressionTestSuite",
            "autoAttachChildProcesses": true,
            "program": "node $workspaceFolder/node_modules/.bin/cucumber-js",
            "args": [
            ],
            "envFile": "$workspaceFolder/.env"
        ,
    ]

.env:

export SCREEN_SIZE_WIDTH='1366';
export SCREEN_SIZE_HEIGHT='768';

当我运行 VS Code 调试器时,我的 .env 文件中没有环境变量。我应该如何调用 launch.json 中的 .env 文件?


我应该添加更多信息,因为我得到了它的工作:

我最终使我的 .env 文件成为环境变量列表

.env 文件示例:

# Standard supported size is width='1366, height=768
SCREEN_SIZE_WIDTH='1366'
SCREEN_SIZE_HEIGHT='768'
EPAY_GUI_AUTOMATION_TEST_DEBUG_MODE='yadda_yadda_yadda'

在我的 nodejs 世界构造函数中,我包含了

world.js 示例:

enter code here`enter code here`require('dotenv').config();
process.env.EPAY_GUI_AUTOMATION_TEST_DEBUG_MODE

在我使用的 hook.js 中:

BeforeAll(async function() 
    this.browser = await puppeteer.launch(
        headless: (process.env.HEADLESS === 'true'),
        slowMo: parseInt(process.env.SLOWMO),
        defaultViewport: 
            width: parseInt(process.env.SCREEN_SIZE_WIDTH),
            height: parseInt(process.env.SCREEN_SIZE_HEIGHT)
        
    );
.
.
.

我保持 launch.json 不变。

【问题讨论】:

乍一看,您的.env 文件设置不正确(如下面的答案所述)。以下是一些将 dotenv 与 runtimeArgs 和 envFile 结合使用的替代选项 - ***.com/a/58127078/5623301 - 我的调试器无法使用以下代码,但它们可以。 【参考方案1】:

我会使用dotenv 包来加载您的.env 文件,因为它也可供不使用VS Code 的人使用。如果你想将它包含在你的 VS Code 配置中,你可以这样做:


  "version": "0.2.0",
  "configurations": [
    
        "type": "node",
        "request": "launch",
        "name": "RegressionTestSuite",
        "autoAttachChildProcesses": true,
        "program": "node -r dotenv/config $workspaceFolder/node_modules/.bin/cucumber-js",
        "args": []
     ,
   ]

您的问题也可能是您的 .env 文件不应包含 export 和分号,因为它不是 javascript 文件:

SCREEN_SIZE_WIDTH=1366
SCREEN_SIZE_HEIGHT=768

【讨论】:

你知道,这就是最终要做的——只使用 dotenv,现在它工作正常。

以上是关于在 VS Code-debugger 中,如何在 nodejs 的 launch.json 中使用 envFile?的主要内容,如果未能解决你的问题,请参考以下文章

如何在VS2010中运行编译C和C++?

7.vs2015如何在报表中添加日期、时间、页号等

如何在VS2010中运行Lua文件?

VS2012 如何在输出窗口中打印调试信息 C++语言

在VS2010的VC++中如何编译、链接、运行、调试程序

如何在VS工具箱中添加DevExpress控件