Yarn: 错误:没有场景; 必须至少有一个。

创建于 2017-03-02  ·  35评论  ·  资料来源: yarnpkg/yarn

我想在我的 npm 项目中使用“yarn”
在外壳中运行外壳“纱线”时,
它抛出“错误:没有场景;必须至少有一个。

什么问题?

纱线--版本
0.27
节点-v
v6.9.5
unname -a
Linux wfx-pc 4.4.0-3-deepin-amd64 #1 SMP Deepin 4.4.30-2 (2016-12-01) x86_64 GNU/Linux

最有用的评论

你弄错了yarn 😄 你正在执行的 Yarn 来自cmdtest包:http: //manpages.ubuntu.com/manpages/xenial/man1/yarn.1。 html。 卸载cmdtest应该可以解决这个问题。 卸载它后,按照https://yarnpkg.com/en/docs/install#linux -tab 上的说明添加 Yarn 存储库:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn

所有35条评论

@wangfaxi1985 ,请再次检查您的yarn版本,最新版本为0.21.3 ,标记版本为0.22.0-0
还要检查您是否在 $#$4 package.json #$ 所在的文件夹中运行yarn命令
谢谢

你弄错了yarn 😄 你正在执行的 Yarn 来自cmdtest包:http: //manpages.ubuntu.com/manpages/xenial/man1/yarn.1。 html。 卸载cmdtest应该可以解决这个问题。 卸载它后,按照https://yarnpkg.com/en/docs/install#linux -tab 上的说明添加 Yarn 存储库:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn

cmdtest似乎至少默认安装在 Ubuntu 17.04 上,所以也许这应该添加到安装说明中......

对于发现此问题的任何人,如果您在sudo apt-get install yarn上遇到错误,请先运行sudo apt remove cmdtest

在 Ubuntu(至少 17.04)上,在sudo apt remove cmdtest之后,首先按照 https://yarnpkg.com/en/docs/install#linux-tab > Ubuntu。 只有这样sudo apt-get install yarn 。 如果您不关注https://yarnpkg.com/en/docs/install#linux -tab,则运行sudo apt-get install yarn将再次安装cmdtest

在 Ubuntu 17.10 上,我无法安装 yarn - 我删除cmdtest包,但sudo apt-get install yarn重新安装cmdtest

@istals我和你有同样的问题。 即使我先将其删除,cmdtest 仍会安装。 如何在 Ubuntu 17.10 上获取纱线?

对于 Ubuntu 17.10,尝试解决方法:

sudo apt remove cmdtest
sudo apt install npm
sudo npm install -g yarn

对于 Ubuntu 17.10,您需要先添加 Yarn 存储库。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt remove cmdtest
sudo apt install yarn

如果您安装了 cmdtest,请确保删除它。

更喜欢通过 npm 安装。

@jdorleans - 如果您使用 Yarn,则不必安装 npm :)

@jdorleans感谢您的评论。 我已经使用npm install -g yarn成功安装了纱线。

Ubuntu:让我们将node包的二进制命名为nodejs ,但也让cmdtest二进制为yarn

如果不是以 root 身份安装,而是将其安装在用户空间中,这将容易得多。

@cserpell如果您愿意,您可以这样做。 您可以使用一个安装脚本,或者您可以下载 Yarn tarball 并将其解压缩到您想要的任何位置。 详细信息在网站上。 无论如何,如果您安装cmdtest ,您仍然会遇到多个不同的yarn二进制文件的问题。

@sheerun公平地说, cmdtest在 Yarn 存在之前就首先使用了yarn命令。

@Daniel15这就是我所做的,特别是因为我无法在我工作的地方安装程序。 诀窍就是用我自己的bin目录覆盖任何已安装的二进制文件。

我在 Ubuntu 18.04 上遇到了同样的问题,但是我可以使用以下命令进行修复:

sudo apt remove cmdtest
sudo apt remove yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn

@Daniel15我按照您在之前评论中的说明尝试重新安装纱线。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key 添加 -
echo "deb https://dl.yarnpkg.com/debian/稳定主" | 须藤三通 /etc/apt/sources.list.d/yarn.list
sudo apt 更新
sudo apt install yarn

检查版本后,我发现版本是 1.5.1
可以吗? 或者我做错了什么。
如果我卸载 cmdtest 及其所有依赖项也会产生任何问题吗?

@Nazarah - 没错,1.5.1 是最新的稳定版本。 如果要获取 1.6.0,则需要添加 RC repo(在/etc/apt/sources.list.d/yarn.list中将“stable”替换为“rc”)

@丹尼尔15
卸载 cmdtest 和依赖项并安装 yarn.txt

第一个文本文件显示卸载 cmdtest 及其所有依赖项直到使用建议的命令安装 yarn 的 commad 结果

安装纱线fresh.txt

这个文件显示了当我尝试从家里运行纱线时

我编辑了我的评论,因为我意识到 1.5.1Yarn 的最新版本 :)

感谢您的反馈意见。 :D

@OmerHerera

还要检查您是否在 package.json 所在的文件夹中运行了 yarn 命令

你的意思是 package.json 用于 masterm 吗?

@becdeat我安装了 Ubuntu 17.04,但是当我按照建议安装 yarn 后键入yarn --version时,我得到了消息 « yarn » is not installed yet.You can install by typing : sudo apt install cmdtest 。 然后我运行sudo apt install cmdtest但它失败了。

@florianeBhz您需要先添加纱线回购:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

然后你可以sudo apt-get update && sudo apt-get install yarn

有关 Yarn 网站的更多详细信息: https: //yarnpkg.com/en/docs/install#debian -stable

对于您的 Debian 软件包,请考虑与 $# debian/control cmdtest冲突; 如果cmdtest可执行文件已经存在,请添加转移; 使用此处描述的update-alternatives模式: https ://wiki.debian.org/DebianAlternatives

; 使用此处描述的更新替代模式:wiki.debian.org/DebianAlternatives

当您有多个不同的应用程序做同样的事情时,替代方案是。 它不是用于处理命名冲突。

话虽如此,添加与 cmdtest 的冲突似乎是合理的。 我们能做到这一点!

作为旁注:Ubuntu 开发人员似乎认为,当用户键入apt-get install foo时,如果foo不存在但包bar提供了一个具有该名称的命令,那么最好几乎默默地安装包bar代替。

$ sudo apt-get install yarn
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'cmdtest' instead of 'yarn'
[...]
$ dpkg -S bin/yarn
cmdtest: /usr/bin/yarn

我个人认为这是人们认为实施不那么严格的行为会使人们的生活更轻松但实际上只是使事情复杂化的情况之一,因为它引入了随机性(例如这个问题)。

只需使用 nvm 使用 npm 安装 yarn ...

sudo apt remove cmdtest
sudo apt remove yarn
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
nvm install node -lts
npm install -g yarn
yarn --version
1.12.3

不客气🌮

@shawnolson-fp - 人们不应该相信随机脚本来安装 NVM。 没有可以引用的官方方法,而不是传播不安全的安装模式吗? 谢谢!

https://github.com/creationix/nvm是 Github 上的官方项目。 从字面上看,它是谁创造的。 我不知道有什么更安全的方法。 另一种方法是使用指向 nodesource.com 的 PPA ......我只知道两种方式。

@shawnolson-fp - 这不会解决这里列出的问题
问题。 问题是提供“纱线”命令的不同应用程序
已安装。 唯一正确的解决方法是卸载
另一个应用程序或将其从您的 $PATH 中删除。 你可以改变顺序
你的 $PATH 代替,但是有两个提供相同命令的应用程序可以
无论如何都会很混乱。

从我的手机发送。

2018 年 11 月 13 日星期二下午 1:24 Benjamin Bach < [email protected]写道:

@shawnolson-fp https://github.com/shawnolson-fp - 人们不应该
信任随机脚本来安装 NVM。 是不是有官方的方法
您可以引用而不是传播不安全的安装模式? 谢谢!


你收到这个是因为你被提到了。
直接回复此邮件,在 GitHub 上查看
https://github.com/yarnpkg/yarn/issues/2821#issuecomment-438442528或静音
线程
https://github.com/notifications/unsubscribe-auth/AAFnHe9xSSKcMf0WCOzezhob80rXrzeTks5uuzimgaJpZM4MQv_p
.

@shawnolson-fp - 这不会解决这个问题中列出的问题。 问题是安装了提供“纱线”命令的不同应用程序。 解决此问题的唯一正确方法是卸载其他应用程序或将其从 $PATH 中删除。 您可以改为更改 $PATH 的顺序,但是拥有两个提供相同命令的应用程序无论如何都会很混乱。 从我的手机发送。

2018 年 11 月 13 日星期二下午 1:24 本杰明·巴赫@*写道:@shawnolson-fp https://github.com/shawnolson-fp - 人们不应该相信随机脚本来安装 NVM。 没有可以引用的官方方法,而不是传播不安全的安装模式吗? 谢谢! — 你收到这个是因为你被提及了。 直接回复此邮件,在 GitHub 上查看 < #2821 (comment) >,或将线程静音https://github.com/notifications/unsubscribe-auth/AAFnHe9xSSKcMf0WCOzezhob80rXrzeTks5uuzimgaJpZM4MQv_p

我理解这个问题,但就像你说的那样,对于大多数只想用纱线工作的人来说,解决这个问题太麻烦了。 为什么 Debian 决定选择 cmdtest 而不是 yarn 是问题所在。 我只是提供了一种替代方法来在与 nvm 相同的 $PATH 中安装 yarn 和 npm - 如果你问我,这是一个非常漂亮的包......

在问题得到解决之前,很少有人会想弄乱环境变量来解决看似如此简单的问题。

@shawnolson-fp 哈哈,是的,我注意到curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash实际上是官方安装说明并删除了我的评论。 但我很震惊。 震惊!

还有,_Just用nvm用npm安装yarn......_残酷残酷的世界。 我希望每个人在这样做之前都会三思而后行以获得left-pad或其他任何东西。

顺便提一句。 大多数 Debian 问题都是围绕这个解决的。 除了拥有官方软件包似乎仍然遥不可及。

我绝对不会采用你的模式,它过于复杂。

为什么 Debian 决定选择 cmdtest 而不是 yarn 是问题所在。

将手指指向yarn 。 他们被警告说这个包名是在他们公开发布之前被取的,并且已经得到了 Debian 打包人员的意见,试图解决这个问题。 目前正在努力创建一个包,以便正式版本可以在 Debian 和下游发行版(如 Ubuntu)中。

@Daniel15看着这个问题,关闭+冻结似乎足够安全,并附上关于阅读文档的最后说明? 似乎保持打开状态会导致不受欢迎的解决方法?

正在进行的 Debian 工作的参考资料:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843021
https://salsa.debian.org/js-team/node-yarnpkg

@benjaoming大声笑-这是我不知道的,伙计,真是一团糟!

我对双方都有感觉,因为 IMO Debian 和 Yarn 都是最好的,所以我很伤心😢
您可能会认为安装时可能会出现一个简单的提示: which yarn would you like to install @facebook/yarn or cmdtest/yarn?

在这一点上,大多数人可能只会说$#它并使用 npm。 😩

@facebook/yarn

与手头的问题无关,但 Yarn 是一个社区项目,而不是 Facebook 项目——它会是@yarnpkg/yarn 🙂

@arcanis大声笑,这只是一个例子😋...在这里字面意思,哈!

查看这个问题,关闭+冻结似乎足够安全,最后附上关于阅读文档的说明?

好主意。 我将锁定它,因为这里正在进行许多不相关(但有价值!)的讨论。 如果还有什么要讨论的,请随意创建单独的问题。 同时,如果您想使用 Yarn,请卸载cmdtest 。 Yarn Debian 软件包与 cmdtest “冲突”,所以它应该警告你。

此页面是否有帮助?
0 / 5 - 0 等级