Javascript 在需要节点模块时强制执行区分大小写的字符串匹配
我注意到我对heroku的一些推送失败,因为我的package.json中的依赖项的大小写与我在javascript中实际需要的不匹配。例如,在package.json中,我可能有一个名为“somepackage”的东西,但在我的javascript文件中,我有Javascript 在需要节点模块时强制执行区分大小写的字符串匹配,javascript,node.js,heroku,Javascript,Node.js,Heroku,我注意到我对heroku的一些推送失败,因为我的package.json中的依赖项的大小写与我在javascript中实际需要的不匹配。例如,在package.json中,我可能有一个名为“somepackage”的东西,但在我的javascript文件中,我有require(“somepackage”)。在本地,这很好,但在heroku上却失败了。是否有一个节点设置来强制区分大小写,以便我在本地失败?请参阅github上的讨论 npm包的首选命名约定是“全小写”。您可能应该在代码中进行必要的更
require(“somepackage”)
。在本地,这很好,但在heroku上却失败了。是否有一个节点设置来强制区分大小写,以便我在本地失败?请参阅github上的讨论
npm包的首选命名约定是“全小写”。您可能应该在代码中进行必要的更改以遵循此约定
混合使用案例会带来跨平台问题,这主要是因为linux具有区分大小写的文件系统,而windows和macOS默认具有不区分大小写的文件系统
“全小写”惯例是为了避免你所描述的意外
如果您正在使用Mac OS X,您可以按照上的第一个答案检查文件系统的配置。我编写了一个NPM模块来执行此操作,并进行检查以确保代码中引用的所有依赖项都反映在package.json文件中: nodejs dep check
当然,这样做的目的是为了节省您的时间,这样您就不会在事先没有测试/检查的情况下初始化构建或遇到运行时错误。;你可以在Heroku上看到它,但不能在本地看到,因为OSX/Windows没有看到区别,但是Heroku在Ubuntu(linux)上运行,而Ubuntu(linux)是这样的。这是今天更新的,它相对较新,但比其他尝试这样做的模块要好