由于我的Mac有一个不区分大小写的文件系统,因此在本地运行testing时,相关的input错误不会被捕获,但是它们在运行Linux的构build服务器上失败。
例如: require('./mymodule')
在Lion上运行时会find./myModule.js
,而在Linux上则不会。
因为我想让本地testing失败,为了不打破在服务器上的构build,我正在寻找一种方法,使node.js要求更严格,因为它会引发错误,如果它的文件名是不确切(即在套pipe上有差异)。
有谁知道一个办法来完成这个?
编辑 :
由于这个问题似乎没有很好的解决scheme,我创造了valiquire 。
此工具validation整个nodejs项目中的所有需求,同时确保套pipe是正确的。
由于您的hfs文件系统不区分大小写,所以在文件系统库级别查找'文件名'将与'文件名'相匹配,因此node.js将表现相同。 所以根据定义,没有解决方法。
但在重新格式化的价格,你可以改变你的FS格式使用hfs区分大小写。
http://www.coriolis-systems.com/iPartition.php在这个线程中提到: https : //superuser.com/questions/380330/mac-convert-from-case-sensitive-to-case-insensitive-file -系统
在不更改操作系统文件分区的情况下,您可以使用自动检测这些更改的打包程序,我个人使用webpack 2.它在文件解析时发出警告,但情况不同。 它不会阻止编译在OSX / Windows上,但你会有一个提示。 另外有一个捆绑器是当今js开发者的一项重要资产
这种冒失的,不推荐的方法是,要求和强制某种情况,或尝试尽可能多的情况下,但这可能是非常丑陋的做,造成不良的表现,没有说到潜在的危险,加载错误的文件,如果有情况下,重命名文件,旧文件不清理
如果你使用webpack,请查看https://github.com/Urthen/case-sensitive-paths-webpack-plugin
刚刚安装它为我们的开发版本。 如果你在这个问题上,可能已经救了我们多次下来,这可能已经发生了
npm install --save-dev case-sensitive-paths-webpack-plugin
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); const webpackConfig = { plugins: [ new CaseSensitivePathsPlugin(), // other plugins ... ], // other webpack config ... };
总是使用小写字母表示文件名,那么你就不必关心文件系统是否支持它。
让我想起人们过去在网址中使用空格的时候。