在节点 Docker 容器中运行项目时出现 Tailwind CSS EACCESS 错误(Docker Compose)

Posted

技术标签:

【中文标题】在节点 Docker 容器中运行项目时出现 Tailwind CSS EACCESS 错误(Docker Compose)【英文标题】:Tailwind CSS EACCESS Error When Running Project In Node Docker Container (Docker Compose) 【发布时间】:2021-08-17 04:51:58 【问题描述】:

我有一个使用 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

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

【问题讨论】:

【参考方案1】:

看起来 Tailwind 是 trying to create a touch file,这与在开发期间监视文件更改有关,特别是当 Tailwind 位于 JIT mode 时。

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

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

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

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

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

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

【讨论】:

以上是关于在节点 Docker 容器中运行项目时出现 Tailwind CSS EACCESS 错误(Docker Compose)的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker Toolbox 中运行 Java 应用程序时出现 SunCertPathBuilderException

运行命令 **sed** 时出现 docker 容器错误 [重复]

解决CentOS7下运行docker容器时出现的报错Error resolving syscall name...

使用 Flyway 和 Docker 容器内的嵌入式 Postgresql 运行测试时出现 java.net.ConnectException

尝试在运行 docker-toolbox 的 Windows 上使用 docker-compose 在 docker 容器内运行 webpack-dev-server 时出现“来自服务器的空回复”

尝试将docker容器连接到mongodb时出现异常打开套接字异常