preact 项目导入在不同的操作系统上失败

问题描述

我正在使用 preact build 运行一个 preact 项目并执行如下导入:

import PresencetoggleAlert from 'async?name=presencetoggleAlert!components/alerts/PresencetoggleAlert';

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

我已经在 MacOS、ubuntu 和 windows 上测试过并且运行完美,但此刻我的 jenkins 服务器外壳突然出现问题,抛出如下错误

✖ 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)区分大小写,而 Windows 则不区分大小写。如果是 MacOS,则取决于您在安装时选择的内容。

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

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

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