【问题标题】:"NODE_ENV" is not recognized as an internal or external command, operable command or batch file“NODE_ENV”不是内部或外部命令、可操作命令或批处理文件
【发布时间】:2012-08-09 07:27:54
【问题描述】:

我正在尝试为 Node.js 应用程序设置环境。但我每次都会收到这个错误。

“NODE_ENV”未被识别为内部或外部命令, 可运行的命令或批处理文件。

这是什么意思,我该如何解决这个问题?

我使用的是 Windows,也尝试了set NODE_ENV=development,但没有运气。

【问题讨论】:

    标签: windows node.js


    【解决方案1】:

    我为此编写了一个模块:win-node-env

    它创建一个NODE_ENV.cmd 来设置NODE_ENV 环境变量,并使用命令的其余部分及其参数生成一个子进程。

    只需安装它(全局),然后运行你的 npm 脚本命令,它应该会自动让它们工作。

    npm install -g win-node-env
    

    【讨论】:

    • 有效!而且我不必更改任何命令。这就是答案。
    • 这是最简单的方法
    • 如何向脚本添加自定义变量?
    • @ivan-ivory 第一个变量(即 NODE_ENV)必须保持不变(否则它必须是一个完全独立的脚本)。至于在它之后添加自定义变量(即 NODE_ENV=dev SOME_VAR=val),我将不得不修改脚本的逻辑以从 process.argv 解析更多变量。我一直在考虑,但没有时间。随时提出拉取请求。
    • 对我不起作用。我得到: > NODE_ENV=development node_modules/.bin/nodemon --ignore ./public/tones/ --exec babel-node server/index.js 'node_modules' 不是内部或外部命令,可运行程序或批处理文件。
    【解决方案2】:

    听起来您的错误来自尝试运行这样的东西(在 Linux 中有效)

    NODE_ENV=development node foo.js
    

    Windows 中的等价物是

    SET NODE_ENV=development
    node foo.js
    

    在同一个命令外壳中运行。您提到 set NODE_ENV 不起作用,但不清楚您如何/何时执行它。

    【讨论】:

    • 感谢 Jim,我在命令行中使用它并从 package.json 文件中删除。但在那之后我又遇到了另一个。看起来windows不完全支持节点模块。 bcrypt 和 gyp 出现另一个错误。
    • 这里不是专家,但 bcrypt 显示对 windows 的支持,但确实需要 openSSL,不确定是否有帮助。如果没有,可能想发布一个新问题,因为场景发生了一些变化。
    • 虽然这确实有效,但我认为@Susan-stack 给出了正确的答案 - 一个跨平台的解决方案,而不是改变线路以在 Windows 上工作但破坏其他操作系统。
    • 支持 Susan 的回答 - 原始响应早于跨环境模块
    • @krozero 尝试再次安装所有可能对您有帮助的软件包
    【解决方案3】:

    对于 Windows,也可以在命令之间使用 &。喜欢,

      "scripts": {
        "start": "SET NODE_ENV=development & nodemon app/app.js",
      }
    

    【讨论】:

    • 该命令有效,但NODE_ENV 的值为'development'('t' 和'&' 之间的空格将包含在NODE_ENV 中)
    • 正是@roroinpho21 所说的。现在我必须 .trim() 稍后才能使 process.env.NODE_ENV == 'production' 工作。无论如何要避免在oneliner中发生这种情况?
    • 无法正常工作的人,"test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'" 错误 "test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js" true你需要把js文件周围的' '去掉。
    • 如果您尝试运行 npm start 将生产模式设置为生产,这正是您想要的。
    • 这实际上是一个比公认的更好的答案。我没有遇到类似上述 cmets 的任何问题 :)
    【解决方案4】:
    1. npm install --save-dev "cross-env" 模块。
    2. 修改代码为cross-env NODE_ENV=development node foo.js。 然后你可以运行npm run build

    【讨论】:

    • 请不要忘记将cross-env 包含到package.json 中的依赖项中
    • 跨环境最佳答案!
    • 库在这里:github.com/kentcdodds/cross-env -- 并且该页面说在 devDependencies npm install --save-dev cross-env 中包含跨开发;当 npm 脚本说 env VARNAME=varvalue && ... 时,这也有助于解决错误 'env' is not recognized as an internal or external command(只需删除 env 并插入 cross-env 即可)。开发人员无需全局安装或为不同平台使用不同的 npm 脚本!
    • 这应该是公认的答案。这是一个平台无关的解决方案
    • 同意。这个答案涵盖了任何环境变量,而不仅仅是节点环境变量。最佳答案!
    【解决方案5】:

    使用win-node-env,使用它只需在cmdpower shellgit bash上运行以下命令:

    npm install -g win-node-env
    

    之后一切都像 Linux。

    【讨论】:

      【解决方案6】:
      set NODE_ENV=production & nodemon app/app.js
      

      将导致 NODE_ENV 在末尾包含一个空格

      process.env.NODE_ENV == 'production'; //false
      process.env.NODE_ENV == 'production '; //true
      

      正如评论 here 中提到的,改用这个:

      NODE_ENV=production&& nodemon app/app.js
      

      【讨论】:

      • 这可是救命稻草!
      • 你是男人,工作完美
      • 设置 NODE_ENV=production & nodemon app/app.js 性能
      【解决方案7】:

      我在 windows 平台上遇到了同样的问题,我只是运行了以下命令

      npm install -g win-node-env
      

      一切正常

      【讨论】:

      【解决方案8】:

      更改脚本以适应 Windows 是一件非常痛苦的事情。试图找出合适的 Windows 翻译并维护两套脚本是没有办法过上你的生活的。

      将 npm 配置为在 Windows 上使用 bash 要容易得多,并且您的脚本将按原样运行。

      只需运行npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"。确保 bash 可执行文件的路径对于您的机器是正确的。 您可能需要启动终端的新实例才能使更改生效。

      下面的截图说明了好处。

      1. npm 错误!最初尝试运行脚本时。
      2. 为 Windows 使用修改的脚本运行但不显示返回消息。
      3. 更新 npm config 以使用 bash 后,脚本运行并返回相应的消息。

      【讨论】:

        【解决方案9】:

        对于那些使用 Git Bash 并遇到npm run <script> 问题的人,

        只需将 npm 设置为使用 Git Bash 运行脚本

        npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"(根据你的安装改变路径)

        然后 npm 将使用 Git Bash 运行脚本,因此像 NODE_ENV= 这样的用法将正常工作。

        【讨论】:

          【解决方案10】:

          这样做肯定会奏效

          "scripts": {
              "start": "SET NODE_ENV=production && node server"
          }
          

          【讨论】:

            【解决方案11】:

            这对我有用,因为它很容易解决。我克隆了一个在 WINDOWS 中开发的存储库,但我使用的是 MACOS。

            如果您使用的是 Windows,请使用 SET 作为前缀:

            "scripts": {
                "dev": "SET NODE_ENV=development && nodemon index.js",
              },
            

            但如果您使用的是 MacOS删除 SET 关键字并使用:

            "scripts": {
                "dev": "NODE_ENV=development && nodemon index.js",
              },
            

            简而言之

            如果您使用的是 Windows,请在运行脚本之前使用 SET 前缀,并从 MacOS(也可能是 LINUX)中删除 SET,如上所示。

            【讨论】:

            • @Ishan_Kesharwani 空格在 && 之前在 windows 环境中很重要,在此示例中 NODE_ENV 为“development”,要在 development 字符串后删除空格,dev 中的语句应仅用 && 分隔,不带空格。
            【解决方案12】:
            npm install -S cross-env
            

            为我工作

            【讨论】:

              【解决方案13】:

              如果其他人像我一样来到这里试图找到错误的解决方案:

              'env' is not recognized as an internal or external command
              

              我得到这个的原因是我正在将一个角度解决方案从 mac 开发机器迁移到 windows 10 桌面。我就是这样解决的。

              1. 运行npm install --save-dev cross-env

              2. 进入我的 package.json 文件并将所有脚本引用从 env <whatever> 更改为 cross-env <whatever>

              然后我的命令如:npm run start:some_random_environment_var 现在可以在 Windows 10 上正常运行。

              【讨论】:

              • 对于 Windows 用户来说,只切换到 Bash 有点糊涂,尤其是当其余的都正常工作时。这是一个对我有用的好解决方案。
              • 这应该是公认的答案。无论您使用什么操作系统,cross-env 都可以使用。
              【解决方案14】:

              对于windows,你可以这样做

              "scripts": {
                  "start:prod" : "SET NODE_ENV=production & nodemon app.js",
                  "start:dev" : "SET NODE_ENV=development & nodemon app.js"
              },
              

              【讨论】:

                【解决方案15】:

                上面的大多数答案对我没有帮助..

                帮助我的是NODE_ENV=production&& nodemon app/app.js

                注意空格。 祝你好运。

                【讨论】:

                • 这在 Windows 10、Node v14.18.1 中对我有用。
                【解决方案16】:

                对于窗户 打开 git bash 并尝试

                NODE_ENV=production node app.js

                【讨论】:

                • 当直接使用时,它确实可以在 Git Bash (mintty) 中工作。但是,当我从 npm <scripts_entry> 运行相同的命令时,我得到一个措辞不同但含义相同的错误:它将 env var name 视为可执行文件。
                • @AndreyMikhaylov-lolmaus npm run <script> 默认使用 Windows cmd 来运行命令。您可以将其设置为使用 Git Bash。 npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe" 然后npm run 将使用 Git Bash 运行脚本。
                【解决方案17】:

                在“package.json”文件中设置脚本“test”

                例如:

                在 Windows 中; "test": "SET NODE_ENV=test & jest",

                在 Linux/Mac 中; "test": "NODE_ENV=test jest",

                【讨论】:

                  【解决方案18】:

                  如果您使用“Yarn Packager”,您可以通过以下命令解决此问题:

                  yarn global add win-node-env
                  

                  【讨论】:

                    【解决方案19】:

                    "set NODE_ENV=production&& nodemon server.js"这个对我有用。

                    【讨论】:

                    • 这与此处已有的其他 21 个答案有何不同?
                    【解决方案20】:

                    process.env.NODE_ENV 正在添加一个空白 这样做

                    process.env.NODE_ENV.trim() == 'production'
                    

                    【讨论】:

                      【解决方案21】:
                      NODE_ENV=development & node [your file name here]
                      

                      SET NODE_ENV=development & node [your file name here]
                      

                      我希望它能解决您的问题。快乐编程!

                      【讨论】:

                        【解决方案22】:

                        在 Windows 平台上

                        ($env:NODE_ENV="environmentName") -and (node file.js)

                        杀死终端(Ctrl + C)然后运行文件

                        节点文件.js

                        【讨论】:

                        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                        【解决方案23】:

                        在 Windows 机器上 npm install -g win-node-env

                        【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2022-01-05
                        • 2021-02-18
                        • 1970-01-01
                        • 2018-08-25
                        • 2014-06-01
                        • 2022-01-06
                        相关资源
                        最近更新 更多