preact 项目导入在不同 OS 上失败

preact project import fails on different OS

我是 运行 一个 preact 项目 preact build 并按如下方式进行导入:

import PresenceToggleAlert from 'async?name=presenceToggleAlert!components/alerts/PresenceToggleAlert';

我的实际路线是components/alerts/presenceToggleAlert(没有大写字母P

我在MacOS上测试过,ubuntu和windows都完美运行,但是此时我的jenkins server的外壳突然出现问题,报错如下:

✖ ERROR ./components/alerts/alertContainer/index.js
Module not found: Error: Can't resolve 'components/alerts/PresenceToggleAlert' in './src/components/alerts/alertContainer'
 @ ./components/alerts/alertContainer/index.js 39:0-103 131:22-41
 @ ./components/framework/page/index.js
 @ ./index.js

有人知道问题出在哪里吗?我不明白为什么它在本地工作但在远程机器上不工作。

我的服务器在 CentOS 6.5 上运行并且 Jenkins 版本为 2.263.4

Linux 文件系统(在你的例子中是 CentOS)是 case-sensitive where as Windows in case-insensitive.如果是 MacOS,则取决于您在安装时选择的内容。

将您的代码更改为小写 p,因为这是实际文件所在的位置。所以应该是

import PresenceToggleAlert from 'async?name=presenceToggleAlert!components/alerts/presenceToggleAlert';

或者,如果您想重命名文件本身,那么在 Window,您不能简单地更改大小写。它通常会被 Git 忽略,并且不会有任何提交。分两步提交。首先将文件更改为某个临时名称。然后做提交。再次将临时文件重命名为您想要的实际文件,然后再次提交。此外,在推送您的更改之前,您可以简单地将您的提交压缩为一个提交。