无法通过npm自动安装classnames包(在package.json中定义)

我很新的NodeJS和我面临npm安装classnames包保存到package.json文件的问题。

假设我有这个dependencies列表:

 "dependencies": { "classnames": "^2.1.2", "jquery": "^2.1.3", "sleep": "^1.2.0", }, 

然后,当我运行npm install ,只有jquerysleep被安装到node_modules文件夹中,而不是classnames 。 但是,如果我手动npm install classnames ,它会将该程序包下载到node_modules文件夹。

所以,我可以通过这个解决方法在本地运行我的应用程序,但是当我将代码部署到heroku时,无法以任何方式安装,并且我的应用程序无法运行。

我试图运行npm cache clean但没有帮助。 这是从特定的类名包或其他什么问题吗?

提前致谢。

最后我可以解决这个问题。 这不是只有classnames包的问题。

解决的办法是在我安装了本地需要的所有软件包后运行npm shrinkwrap 。 然后提交所有(特别是包括npm-shrinkwrap.json中的更改)并推送到heroku。

原因已经在这里解释清楚了 。 快速复审:

当“npm install”在软件包根目录下安装了一个npm-shrinkwrap.json文件的软件包时,shrinkwrap文件(而不是package.json文件)完全驱动该软件包及其所有依赖项(recursion)的安装。