我注意到我对heroku的一些推动失败了,因为我的package.json中的依赖大写与我在javascript中实际需要的大写不匹配。例如,在package.json中,我可能有一些名为" somepackage",但在我的javascript文件中我有require("somePackage")
。在本地,这工作正常,但在heroku上它失败了。是否有节点设置来强制区分大小写,以便它可以在本地为我失败?
答案 0 :(得分:2)
请参阅github上的讨论https://github.com/npm/npm/issues/3914
npm包的首选命名约定是"全小写"。您可能应该对代码进行必要的更改以遵循此约定。
混合案例带来跨平台问题主要是因为linux有一个区分大小写的文件系统,而Windows和macOS默认情况下有一个不区分大小写的文件系统。"全小写"惯例是为了避免诸如你所描述的意外之类的惊喜。
如果您使用的是Mac OS X,可以按照https://apple.stackexchange.com/questions/22297/is-bash-in-osx-case-insensitive上的第一个答案检查文件系统的配置方式
答案 1 :(得分:1)
我写了一个NPM模块,它执行此操作并检查以确保代码中引用的所有依赖项都反映在package.json文件中:
的NodeJS-DEP检查
https://www.npmjs.com/package/nodejs-dep-check
当然,目的是节省您的时间,这样您就不会在没有事先进行测试/检查的情况下初始化构建或遇到运行时错误。