返回

解决Windows NodeJS "node not found"错误

windows

解决 Windows 下 NodeJS 项目 "15: exec: node: not found" 错误

在Windows系统上开发NodeJS项目时,有时会出现 "15: exec: node: not found" 的错误,尤其是在结合Typescript和nodemon使用时。这个错误表明系统无法找到 node 执行程序。虽然node本身已安装,但它的路径可能未被正确添加到系统的环境变量中,导致脚本无法识别。接下来分析问题根源并提供相应的解决方案。

问题分析

这个错误通常发生于 nodemon 执行 ts-node 命令时,而不是直接运行 tsc 编译时,原因是 nodemon 是一个独立的程序,需要从系统环境变量中查找 node 命令。当 node 的安装路径没有在系统的环境变量 PATH 中配置时,系统便无法识别该命令。

另外,ts-node 的执行需要依赖 Node.js 环境。即便全局安装了 ts-node ,它也需要一个有效的 node 解释器来执行 Typescript 代码。如果环境变量配置有误,也会影响 ts-node 的正常运行。

解决方案

以下是针对这个错误的几种解决方法,根据具体情况选用。

方案一:确认并设置 Node.js 环境变量

这是最常见,也最推荐的解决方法。 需要手动确认 Node.js 的安装路径是否已经添加到了系统的环境变量中,步骤如下:

  1. 查找 Node.js 安装路径 。 默认情况下,Windows 下 Node.js 会被安装在 C:\Program Files\nodejsC:\Program Files (x86)\nodejs 路径。可以通过程序安装位置或命令行where node 找到具体的安装目录。

  2. 配置系统环境变量 。在“系统属性” -> “高级” -> “环境变量” 中,找到系统变量列表中的 “Path”,编辑它,添加一个新的条目,写入上一步中找到的 Node.js 安装路径。 注意: 若 “Path” 变量不存在, 请创建新的系统变量, 名为 "Path"。

    完成以上操作后, 打开命令行终端或 PowerShell , 输入命令 node -v 或者 npm -v, 查看是否正常输出版本号。 如果依然报"node not found"的错误, 可能需要重启电脑。

代码示例:

此步骤无需代码示例, 需通过图形界面操作。

方案二: 使用完整的Node.js路径

若不希望修改全局环境变量,也可在 nodemon.json 配置中提供 node 的完整路径。 需要先找到 node.exe 可执行文件的实际路径,并在 nodemon.json 文件中明确指定。 这需要将 nodemon 的 exec 配置改动:

操作步骤:

  1. 在你的电脑上找到node.exe 所在路径,例如:C:\Program Files\nodejs\node.exe
  2. 打开 nodemon.json 文件,将 exec 字段修改为以下内容,请根据自己的路径替换
      "exec": "\"C:\\Program Files\\nodejs\\node.exe\" ./node_modules/ts-node/dist/bin.js ./src/index.ts"
    

这里使用了 node 的完整路径,直接运行 ts-nodebin.js 文件,而不是让系统通过 PATH 查找。

方案三: 通过 npm 命令执行脚本

修改 package.jsonscripts 部分,在执行脚本前调用 node。避免 nodemon 直接执行 ts-node。修改package.json 文件:

"scripts": {
    "start": "node ./node_modules/nodemon/bin/nodemon.js"
}

这样nodemon通过node运行,可以避免"node not found"的问题。 需要注意的是: 需要把nodemon.json里面的 exec 参数去掉, 同时需要通过npm script参数将 ts-node ./src/index.ts 传递给nodemon。 完整修改方案如下:

  • 删除nodemon.json文件里的exec参数
  • 修改package.json的scripts配置
    "scripts": {
      "start": "node ./node_modules/nodemon/bin/nodemon.js --exec \"ts-node ./src/index.ts\" "
    }

操作步骤:

  1. 修改 package.json 的脚本。
  2. 删除 nodemon.json 的exec 字段
  3. 执行 npm run start 命令。

方案四:全局安装 ts-node

确认 ts-node 是否已全局安装。虽然局部安装足以支持项目运行,但部分工具可能期望 ts-node 可全局访问,可以尝试全局安装:

操作步骤:

  1. 运行命令: npm install -g ts-nodeyarn global add ts-node

  2. 如果还是报 node not found 错误, 可以考虑将 ts-node的 bin 目录加入环境变量 Path 中。

    可以通过 where ts-node 或者 npm prefix -g 查看 全局ts-node 安装位置。将对应路径下的 bin目录添加到Path。

  3. 重新运行项目脚本

安全建议

修改环境变量需要小心,错误的环境变量设置可能导致系统问题。 确保路径正确且无误,并了解这些改动的影响。 另外, 可以使用 nvm(nodejs version manager) 来管理 node 版本和环境,在项目内统一配置.
同时要谨慎从不可信来源复制命令,执行之前确保明白代码逻辑。

总结

"15: exec: node: not found" 错误并不复杂, 主要在于 node 可执行程序路径未正确配置或者nodemon无法访问。通过合理的环境配置,或是调整nodemon的配置,便可快速解决。选择合适的解决方案并遵循建议步骤,有助于在Windows上顺利进行 NodeJS 和 Typescript 开发。