`dart run` 无法记录`编译未产生任何结果...` 并因 `PathNotFoundException` 崩溃

问题描述 投票:0回答:2

我在 Ubuntu 服务器上尝试运行使用 Dart 构建的 API 时收到以下信息:

root@veyilserver:~/veyilapi# dart run

Building package executable... (17.7s)
Compilation did not produce any result. Expected file at /root/veyilapi/.dart_tool/pub/bin/veyilapi/tmpCNPJMW/veyilapi.dart-3.3.4.snapshot.incremental.temp
Built veyilapi:veyilapi.
Cannot rename file to '/root/veyilapi/.dart_tool/pub/bin/veyilapi/veyilapi.dart-3.3.4.snapshot', path = '/root/veyilapi/.dart_tool/pub/bin/veyilapi/tmpCNPJMW/veyilapi.dart-3.3.4.snapshot.incremental.temp' (OS Error: No such file or directory, errno = 2)
PathNotFoundException: Cannot rename file to '/root/veyilapi/.dart_tool/pub/bin/veyilapi/veyilapi.dart-3.3.4.snapshot', path = '/root/veyilapi/.dart_tool/pub/bin/veyilapi/tmpCNPJMW/veyilapi.dart-3.3.4.snapshot.incremental.temp' (OS Error: No such file or directory, errno = 2)

一切都运行良好,直到我昨天重新启动服务器。现在,它彻底坏了。我尝试卸载并重新安装 Dart SDK,也尝试使用早期版本(3.3.0 和 3.0.0),但无法克服这个问题。

有人可以帮忙解决吗?

很抱歉,但我不确定这是否是语言或 Dart VM 的问题。

以下是有关我正在使用的服务器和 Dart 版本的更多信息:

Dart 版本和工具诊断信息 (
dart info
)

一般信息

  • Dart 3.3.4 (stable) (None) on "linux_x64"
  • on linux / Linux 6.5.0-28-generic #29-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 28 23:46:48 UTC 2024
  • locale is C.UTF-8

流程信息

未找到 Dart 进程。

操作系统

Ubuntu 23.10 x64

Pubspec.yaml

name: veyilapi
description: A simple server setup
version: 1.0.0

environment:
  sdk: ">=3.0.0"

dependencies:
  args: ^2.5.0
  shelf: ^1.4.1
  shelf_router: ^1.1.4
  http: ^1.2.1

dev_dependencies:
  lints: ^3.0.0
  test: ^1.25.4

另外,当我尝试运行

dart compile
时,发生了以下错误:

root@veyilserver:~/veyilapi# dart compile exe bin/veyilapi.dart 
Error: AOT compilation failed
Generating AOT kernel dill failed!

我已经做了什么?

  1. 确保所有依赖项都是最新的。
  2. 检查了
    .dart_tools
    ,发现它是空的。
  3. 删除了
    .dart_tools
    并运行了
    dart pub get
  4. 在互联网上搜索并发现一个包含类似文本的问题dart-lang/sdk#55453,这使我找到了dart-lang/pub存储库中记录特定错误行的特定行。
  5. 提交了新问题dart-lang/sdk#55639
  6. 从服务器卸载Dart SDK并重新安装。
  7. 将 Dart SDK 降级到旧版本并检查是否有效。
  8. (5月5日 06:43) 尝试跑步
    dart pub cache clean
    ->
    dart pub get
    ->
    dart run
dart server dart-shelf
2个回答
1
投票

经过Dart社区的讨论,终于解决了这个问题。

没有充分的理由,带有

dart compile
标志的
--verbose
确实工作并生成了编译后的
.exe
文件,我能够毫无问题地启动服务器。

注意:当我尝试单独运行

dart compile
dart run
时,问题仍然存在。


0
投票

我在使用苹果芯片的 macOS 上的 flutter 3.27.0 上遇到了类似的错误 - 我尝试了几种方法,包括

flutter clean
flutter doctor -v
,以及接受的答案,但最终我卸载并重新安装了 flutter,这对我有用.

我相信更新到 3.27 后部分 dart SDK 已损坏

© www.soinside.com 2019 - 2024. All rights reserved.