【问题标题】:pub get error: Cannot create link...(OS Error: Incorrect function)发布错误:无法创建链接...(操作系统错误:功能不正确)
【发布时间】:2014-03-21 10:03:41
【问题描述】:

我在尝试获取 angular dart codelab 的包时出错:

--- 10:01:28 Running pub get ... ---
Pub get failed, [1] Resolving dependencies........................................
Cannot create link, path = 'X:\Dev\Dart\ng-darrrt-codelab-master\packages\angular' (OS Error: Incorrect function.
, errno = 1)

我尝试删除包文件夹中的所有内容,然后重试。 所有包都正确下载,但“无法创建链接”错误仍然存​​在...

我在 windows server 2008 上,我使用 DartEditor 1.2.0

【问题讨论】:

  • 可能问题出在网络驱动器上。你可以在本地驱动器上试试吗?
  • 确实如此。我将文件夹移动到本地驱动器上,get-pub 现在运行良好。谢谢!
  • 这是 Windows + 符号链接 + 网络驱动器的已知问题。
  • 问题在于pub包管理器的大部分操作都是基于符号链接的创建和使用。您应该始终将此视为可能的限制,甚至是潜在的问题。

标签: dart dart-pub


【解决方案1】:

pub 不是为每个项目下载包,而是将它们下载到缓存目录并将其符号链接到您的packages 目录。这节省了带宽,因为它不需要每次都下载包,只需从缓存中进行符号链接即可。如果pub 无法创建符号链接,则会引发Cannot create link 错误。在 Windows 上,无法将文件夹从本地驱动器符号链接到网络驱动器。您可以通过将文件移动到本地驱动器然后运行 ​​pub get 来规避错误。

【讨论】:

  • 你不太正确。它节省带宽不是因为创建到本地缓存的符号链接。它节省了带宽,因为它将下载的包放入缓存中。但是,如果包管理器不会对缓存进行符号链接,但仍会将这些先前下载的包复制到应用程序文件夹(从本地缓存中),那么这也可以节省带宽。许多其他包管理器不创建符号链接,但它们也节省带宽(使用缓存)并且作为 Dart 包管理器没有问题。
  • @mezoni 随意编辑它,因为我不完全明白你想说什么。
  • 如何将文件移动到本地驱动器,然后运行 ​​pub get?
  • @0xcaff 谢谢我在mac上使用VM使用windows,我在mac驱动器中创建flutter应用程序并在网络上使用它所以现在我把项目放在C: windows驱动器和flutter clean .它只是清理 cache 并构建 Windows 应用程序,现在它可以工作了。
猜你喜欢
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 2022-11-04
  • 2020-10-24
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多