You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS中使用which命令报错:ReferenceError: which is not defined 求助

解决Node.js中which is not defined的报错问题

这个报错的原因很直接:Node.js本身没有内置which函数,你原来的CoffeeScript代码依赖了第三方的which npm包,但移植到原生Node.js时没有正确引入这个依赖,所以才会抛出ReferenceError。

下面是具体的解决步骤:

1. 安装which依赖包

首先在你的项目根目录下运行命令,安装这个用来查找系统可执行文件的第三方包:

npm install which
# 如果你用yarn的话:
# yarn add which

2. 在代码中引入which

根据你的Node.js项目使用的模块系统,选择对应的引入方式:

CommonJS模块(大多数Node.js项目默认)

在代码开头添加引入语句:

const which = require('which');

ES模块(如果你的项目在package.json中设置了"type": "module")

在代码开头添加:

import which from 'which';

3. 修改后的完整代码示例

const which = require('which');
// 假设log是你项目中定义的日志函数,如果是用console.log可以直接替换
const log = console.log;

const ossl = which('osslsigncode');
if (!ossl) {
    log('Warning: osslsigncode not found, code-signing disabled');
}

补充说明

原来的CoffeeScript代码能正常运行,大概率是因为你的CoffeeScript项目已经提前安装了which依赖,只是在移植到原生Node.js时遗漏了这一步。这个第三方which包的作用就是在系统PATH中查找指定可执行文件的路径,完全匹配你当前的需求。

内容的提问来源于stack exchange,提问作者Curtis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:11:57