node.js - 是否可以在 Windows 上使用 Cygwin 来开发带有 Yarn 的 Node.js 应用程序?

标签 node.js npm yarnpkg

我想开始使用 yarn。

我在 Windows 上使用 cygwin,我启动并输入:

$yarn init

我得到:

$ yarn init
yarn init v1.12.3
error An unexpected error occurred: "Can't answer a question unless a user TTY".
info If you think this is a bug, please open a bug report with the information provided in "C:\\home\\code\\repos\\pwa\\yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/init for documentation about this command.

什么意思:“除非用户 TTY,否则无法回答问题”?

我是否无法将 cygwin 提供的 bash shell 与 yarn 一起使用?我找不到任何文件告诉我应该下载和使用什么终端/shell。

我需要使用带有脚本、别名、命令行补全的 bash shell 来提高工作效率,并且可以访问用于脚本编写的所有 gnu 命令,因此 DOS 命令提示符或 powershell 不是一个选项。

最佳答案

是的!

TL;DR:更新到最新的 yarn 版本。跳到最后查看如何获取最新版本。它并不像听起来那么简单。

我相信如果您修改 /c/Program Files/nodejs/yarn 文件以在 cygwin 中正常工作,它可以在 yarn 1.x 中完成。我不明白为什么这个脚本是这样写的,但我明白为什么它不能在 cygwin 终端上运行:对于某些路径,它将它们转换为 Windows 路径,然后将 linux 路径附加到它的末尾.我打赌如果您修改它以使用 linux(即 cygwin)路径,yarn 1.x 将正确运行。

但是,这不是一个很好的答案,因为这都是假设。幸运的是,有一个不是假设的更简单的解决方案:升级到最新的 yarn。一旦我这样做了,cygwin 就可以正常工作了。他们可能修复了旧版本中的错误。

您可能会对自己说,“我刚刚运行了 npm install yarn,所以我已经有了最新版本。”这并不意味着您拥有最新的 yarn 。出于某种原因,这会安装最新版本的 1.x。 yarn 的最新版本是 3.x。

此外,要从 1.x 升级到最新版本,您需要运行一些临时命令——而不是 npm install 其他命令。

这里是 the guide to go from yarn 1.x to latest :

  1. 运行 npm install -g yarn 将全局 yarn 版本更新到最新的 v1

  2. 进入你的项目目录

  3. 运行yarn set version berry启用v2

  4. 如果您使用的是 .npmrc 或 .yarnrc,则需要将它们转换为新格式

  5. 在您的 .yarnrc.yml 文件中添加 nodeLinker: node-modules

    我不知道第 4 步是什么意思。但是我当前的 .yarnrc 看起来像这样:

    yarnPath: ".yarn/releases/yarn-berry.cjs"
    nodeLinker: node-modules
    
  6. 提交到目前为止的更改(yarn-X.Y.Z.js、.yarnrc.yml、...)

  7. 运行yarn install迁移锁文件

  8. 像往常一样使用 yarn

关于node.js - 是否可以在 Windows 上使用 Cygwin 来开发带有 Yarn 的 Node.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53891625/

相关文章:

javascript - 当您使用 devDependencies 部署 NPM 包时,何时会发生构建?

javascript - 在 Mac OS X 上安装 paper.js

npm - 无法加载配置 "plugin:vue/no-layout-rules"来扩展

javascript - 如何在javascript中迭代光标

mysql - 将 NodeJS 容器连接到 MySQL 数据库

node.js - NodeJS - 回收 worker ?

typescript - 如何禁用 eslint no-promise-executor-return?

node.js - tsc 错误 TS1110 node.d.ts Node.js v6.x

javascript - 是否可以将 npm 依赖项从另一个包合并到当前包?

firebase - 另一个 “unmet peer dependency”问题