npm 模块不会在没有此类文件的情况下执行,但它确实存在

Posted

技术标签:

【中文标题】npm 模块不会在没有此类文件的情况下执行,但它确实存在【英文标题】:npm module will not execute with no such file, but it does exists 【发布时间】:2018-09-06 00:37:18 【问题描述】:

运行 Windows 10 和 git bash。

我正在尝试运行 webdriver io npm 模块。它显然存在于我的系统上,但是当我尝试运行它时,它会说没有这样的文件。我对 npm 本身没有任何问题。

任何想法有什么问题吗?

usery@AUS-LT-384 MINGW64 ~/github/e2e-temp (master)
$ lr ./node_modules/.bin/wdio
-rw-r--r-- 1 user 1049089 23 Mar 27 09:15 ./node_modules/.bin/wdio

user@AUS-LT-384 MINGW64 ~/github/e2e-temp (master)
$ ./node_modules/.bin/wdio wdio.conf.js
./node_modules/.bin/wdio: line 1: ../webdriverio/bin/wdio: No such file or directory

user@AUS-LT-384 MINGW64 ~/github/e2e-temp (master)
$ npm -v
5.6.0

【问题讨论】:

./node_modules/.bin/wdio:第 1 行:../webdriverio/bin/wdio:没有这样的文件或目录显示 ./node_modules/.bin/wdio 是可执行的,但它搜索../webdriverio/bin/wdio。你有 ../webdriverio/bin/wdio 吗? 不,为什么要一个父级执行? --help 有用吗? 不,同样的问题。 【参考方案1】:

您可能是通过另一个系统(可能是 linux)或 WSL(Linux 的 Windows 子系统:Windows 上的 Bash)安装了这个包;这样 npm 可执行文件(/node_modules/.bin 目录内容)无法运行。

首先通过WSL卸载它来重新安装包:

npm uninstall wdio

然后通过git-bash安装:

npm install wdio

应该可以解决这个问题。如果不尝试通过 Windows 终端( CMD 或 PowerShell )安装包。这样在./node_modules/.bin/ 目录中,您应该会在wdio 文件旁边看到一个wdio.cmd 文件,并且您的可执行文件已准备就绪:

user@AUS-LT-384 MINGW64 ~/github/e2e-temp (master)
$ ./node_modules/.bin/wdio -v
v4.12.0

【讨论】:

不,它不能是 WSL。它必须在 Windows 中是本机的。以上不行,Window 不遵循 npm 模块的路径。 @dman,如果 Windows 可以在 .bin 目录中的 wdio 文件旁边找到 wdio.cmd 文件,它将遵循该路径。并且应该通过 CMD 或 PowerShell 或 git-bash 安装包以生成此文件。您应该首先通过WSL 卸载软件包,然后通过git-bashCMDPowerShell 重新安装它【参考方案2】:

如果您使用的是 5.x.x,请先安装 cli

npm i --save-dev @wdio/cli

【讨论】:

【参考方案3】:

如果您使用 package.json,您可以包含脚本并使其更易于运行

"scripts": 
  "tests": "wdio wdio.conf.js"

并运行它们

npm run tests

【讨论】:

以上是关于npm 模块不会在没有此类文件的情况下执行,但它确实存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有“dist”的情况下在 NPM 上发布 TypeScript 模块?

argparse 模块如何在没有任何参数的情况下添加选项?

在没有Webpack的情况下从NPM模块解析Sass @import

如何在没有 npm 的情况下手动从 github 下载和导入 node 模块,并将其安装在 React Native 项目中?

如何在没有 npm install 的情况下从 github 运行 react 项目

默认的body margin,我没有设置,但它确实有默认值8px,如何获取这个值?