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
相关产品推荐
相关产品推荐

