当设置为 时,我npm install
在工作时遇到了麻烦,并且由于我对 Node 的了解不够深入,无法理解出了什么问题,所以我想我应该问一下为什么会出现这种情况。NODE_ENV
production
对于上下文:
本项目使用节点18.14.2
package.json
包括一个名为 的脚本,prepare
该脚本只是运行husky install
,并且作为 的一部分执行npm install
。当
NODE_ENV
设置为其默认值时development
,npm install
才能成功完成:file-upload git:(ACW-5868) ✗ export NODE_ENV=development file-upload git:(ACW-5868) ✗ npm install > @icpsr/[email protected] prepare > husky install husky - Git hooks installed added 1397 packages, and audited 1845 packages in 5s 236 packages are looking for funding run `npm fund` for details 5 moderate severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details.
但是,当它设置为 时
production
,我得到:file-upload git:(ACW-5868) ✗ export NODE_ENV=production file-upload git:(346b304) npm install > @icpsr/[email protected] prepare > husky install sh: husky: command not found npm ERR! code 127 npm ERR! path /Users/bhorvath/tmp/file-upload npm ERR! command failed npm ERR! command sh -c husky install```
这里发生了什么?当构建在环境中运行时,为什么节点无法找到根目录结构中的可执行文件production
?(顺便说一句,并不是说你一定想这样做;我只是好奇。)
您可能跑去
npm install husky --save-dev
安装该软件包(正如官方文档建议的那样: https: //typicode.github.io/husky/getting-started.html#manual)。--save-dev
安装仅用于开发的包,这就是为什么你不能在生产环境中运行它。您可以通过打开
package.json
文件并检查是否husky
位于devDependencies
.如需在生产环境中使用
husky
,可以参考官方文档: https: //typicode.github.io/husky/guide.html#disable-husky-in-ci-docker-prod