NODE_PATH被atom消耗,它取代了我已经就位的NODE_PATH

时间:2017-10-24 23:58:34

标签: node.js npm atom-editor pty platformio

我在Windows 10环境中为Atom文本编辑器编写插件,允许通过原子内的量角器黄瓜运行测试,它消耗了PlatformIO-Terminal插件提供的服务。当我从Atom中激活终端插件时,我希望能够从我的终端执行任何旧程序,它可以通过pty模拟它。

我在执行任何节点程序时遇到问题,我已经通过npm在Atom的apm之外安装了。通过从该终端内打印环境变量NODE_PATH进一步挖掘,发现Atom已经吃掉了我的NODE_PATH值,没有附加它自己但完全消耗并替换它。从该pty窗口中重置它并不起作用,也没有将它添加到" Shell环境变量"从PlatformIO配置终端内部。我已经安装了3个插件,允许从操作系统中提取环境变量,但没有一个插件成功。

有没有办法解决这个问题?我可以直接访问可执行模块,但是它们会调用其他模块并依赖于NODE_PATH。

1 个答案:

答案 0 :(得分:1)

如果您未使用终端套餐取得成功,可以尝试process-palette。它允许您精确定义命令的所有细节,包括环境变量。我做了一个Atom命令,在执行终端命令之前将NODE_ENV设置为任意字符串。屏幕截图如下:

Process Palette command definition.

Process Palette environment variables.

下面是一个process-palette.json文件,它定义了我编写的命令。您需要做的就是安装软件包,使用以下代码制作该文件,然后选择Packages -> Process Palette -> Edit Configuration

{
  "patterns": {
    "P1": {
      "expression": "(path):(line)"
    },
    "P2": {
      "expression": "(path)\\s+(line)",
      "path": "(?:\\/[\\w\\.\\-]+)+"
    }
  },
  "commands": [
    {
      "namespace": "process-palette",
      "action": "env",
      "command": "echo %NODE_PATH%",
      "arguments": [],
      "cwd": null,
      "inputDialogs": [],
      "env": {
        "NODE_PATH": "wargarble"
      },
      "keystroke": null,
      "stream": true,
      "outputTarget": "panel",
      "outputBufferSize": 80000,
      "maxCompleted": 3,
      "autoShowOutput": true,
      "autoHideOutput": false,
      "scrollLockEnabled": false,
      "singular": false,
      "promptToSave": true,
      "saveOption": "none",
      "patterns": [
        "default"
      ],
      "successOutput": "{stdout}",
      "errorOutput": "{stdout}\n{stderr}",
      "fatalOutput": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
      "startMessage": null,
      "successMessage": "Executed : {fullCommand}",
      "errorMessage": "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}",
      "fatalMessage": "Failed to execute : {fullCommand}\n{stdout}\n{stderr}",
      "menus": [
        "env"
      ],
      "startScript": null,
      "successScript": null,
      "errorScript": null,
      "scriptOnStart": false,
      "scriptOnSuccess": false,
      "scriptOnError": false,
      "notifyOnStart": false,
      "notifyOnSuccess": true,
      "notifyOnError": true,
      "input": null
    }
  ]
}