Nikolay
(Nikolay)
1
你好,我无法在 Windows 上开发,因为会出现空白屏幕。当我打开控制台时,会看到以下错误:
(X) ember_jquery.js?1579775136.5740232:1 Uncaught Error: Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/pr
(in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')
at ember_jquery.js?1579775136.5740232:1
还有很多类似的错误。
基本上,Discourse 无法加载脚本。当我在单独的窗口中打开脚本时,会看到以下错误:
Script: http://localhost:3000/assets/locales/en_US.js?1579775136.5398135
Body: throw Error("Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/x2\n (in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')")
于是我开始深入排查,发现问题是出在 Sprockets 上。我从 Windows 将 Discourse 目录挂载到了 Docker 中,而文件系统是不区分大小写的。Sprockets 似乎只能在类似 Linux 的文件系统(如 ext4)上工作,这些文件系统可以区分目录的大小写。
有什么办法可以解决这个问题吗?
谢谢
更新:Sprockets 的这个已知问题已在 GitHub 上记录:FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
但该问题仍处于开放状态,尚未找到解决方案:
sam
(Sam Saffron)
2
有趣的是,@pixeltrix 昨天偶然发现了这个问题,并使用了这个技巧来绕过它:
我建议大家直接安装 WSL2 并使用我们的 WSL2 配置方案,这样更快,也更容易理解:
开发环境的安装非常简单,你只需要启动 WSL2,安装 Docker,然后使用我们的 Docker 开发配置即可。
4 个赞
Nikolay
(Nikolay)
3
非常感谢。这个变通方法奏效了。稍后我会尝试使用 WSL2。
1 个赞