0

我有一个使用 svelte-kit 和 Tailwind CSS 的项目。我最近将它转移到使用 docker compose。当我运行我的容器时,我在 WSL 中运行它们,因为它们通常在那里运行得更好。当我启动运行开发服务器的容器时,它启动并运行得很好,但是当我在浏览器中打开 URL 时,出现以下错误。

Error: EACCES: permission denied, mkdir '/root/.tailwindcss/touch'
    at Object.mkdirSync (node:fs:1325:3)
    at Object.<anonymous> (/var/www/html/node_modules/tailwindcss/jit/lib/setupContext.js:44:8)
    at Module._compile (node:internal/modules/cjs/loader:1109:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14)
    at Module.require (node:internal/modules/cjs/loader:1013:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/var/www/html/node_modules/tailwindcss/jit/index.js:7:22)
    at Module._compile (node:internal/modules/cjs/loader:1109:14)

我不确定是什么导致了这个错误,但我认为它与顺风有关。这是我的 docker-compose 文件的链接:https ://github.com/DriedSponge/GorillianCurrencyConversion/blob/master/docker-compose.yml

如果您想自己尝试一下,这里有一个指向 repo 的链接和重现的步骤: https ://github.com/DriedSponge/GorillianCurrencyConversion

安装包:docker-compose run npm install

启动开发服务器:docker-compose --profile dev up -d --build

如果您对正在发生的事情有任何想法,或者如果您需要我提供任何其他信息,请告诉我。提前致谢!

4

1 回答 1

2

看起来 Tailwind 正在尝试创建一个与在开发过程中监视文件更改有关的触摸文件,特别是当 Tailwind 处于JIT 模式时。

您可以通过以下任一方式解决此问题:

  1. 允许对/root/.tailwindcss.
  2. TAILWIND_DISABLE_TOUCH通过设置环境变量禁用触摸。
  3. TAILWIND_TOUCH_DIR通过将环境变量设置为允许写入的位置来更改触摸文件目录。

package.json要设置环境变量,在你的文件中设置它们可能是最方便的。只需在相关命令前添加环境变量即可scripts,如:

"dev": "TAILWIND_TOUCH_DIR='/var/www/html/.tailwindcss/touch' svelte-kit dev"

注意不要将此目录指向包含重要文件的目录,因为 Tailwind 会删除该目录中的所有文件。

除了源代码中的注释外,这些选项都没有记录在任何地方,所以我不完全确定这样做的后果是什么,尤其是在开发模式下。我相信这用于在文件更改时进行通信,因此选项 1 或 3 可能是最安全的选择。

于 2021-05-29T03:57:06.357 回答