未找到命令"jest",您的意思是:命令'test'从deb coreutils尝试:sudo apt安装〈deb名称>

jdzmm42g  于 2023-01-10  发布在  Jest
关注(0)|答案(1)|浏览(479)

Jest已安装,但当我尝试使用./node_modules/.bin/jest --init生成jest.config.js文件时,出现以下错误:

Command 'jest' not found, did you mean:
command 'test' from deb coreutils
Try: sudo apt install <deb name>

有什么想法吗?

qxgroojn

qxgroojn1#

下面的代码适用于jest以外的软件包,但我用这个作为例子,其他大多数节点软件包的过程通常是类似的。

本地运行

问题是jest仅为这个项目 * 本地 * 安装。有几种方法可以做到这一点:

npx(推荐)

像这样使用它的最简单方法是使用npx(请参见:difference with npm),它将执行节点程序包。

npx jest --init

npx工具将首先尝试本地安装的软件包,如果没有找到,它将下载并一次性运行该软件包,然后将其删除。

将软件包添加到package.json中的scripts

**注:**现在有了npx就不需要了。这是npx引入之前的一项技术。在这里添加它是为了有一个更完整的列表。

基础 Package

这是npx的手动替代方法-可以将包添加到package.json中的scripts部分,如下所示

{
    "name": "some name",
    "version": "0.0.0",
    "description": "",
    "author": "yourself",
    "scripts": {
        /* other scripts */
        "jest": "jest"
    },
    /* dependencies and other properties */
}

这样你就可以像使用npx一样使用npm了。注意你必须添加run来执行这个脚本:

npm run jest --init

它仍然为该操作启动本地X1 M14 N1 X安装。

添加一次性流程

作为一种替代方法,您可以将要运行的命令添加为脚本,然后运行一次并从package.json中删除。

{
    "name": "some name",
    "version": "0.0.0",
    "description": "",
    "author": "yourself",
    "scripts": {
        /* other scripts */
        "oneoff": "jest --init"
    },
    /* dependencies and other properties */
}

然后你就可以执行

npm run oneoff

最后,您可以删除"oneoff": "jest --init"

直接寻址软件包

正如您所发现的,您还可以使用

./node_modules/.bin/jest --init

运行jest。这将工作,但它更长,更烦人的类型。此外,你必须知道包的目录在哪里。
在Linux上,./node_modules/.bin/目录也可以添加到PATH环境变量中,它允许你只执行jest --init或使用任何其他的包,但是它也是危险的和不必要的。

全局运行(不推荐)

您可以全局安装包。这将允许您独立于当前项目运行它:

npm install --global jest

这仍然允许您使用jest --init,但是这也可能会有问题。
1.它需要您安装额外的系统包。可能您没有权限执行此操作,或者您不想执行此操作。
1.如果您开始处理新项目,您仍然有一个节点包的全局安装。如果两个项目使用不同版本的节点包并且这些版本不兼容,您可能会遇到问题。
1.类似地,如果您升级了项目 * 中的节点包 *,或者升级了 * 全局包 *,但没有同时升级,那么您可能会遇到类似的不兼容问题。

相关问题