背景:
將前端項目中一些常用的代碼封裝成了一個單獨的npm包放在私服上,其他項目使用時通過install安裝後,webpack構建時提示找不到該npm包,
This dependency was not found:
* @b/sm2 in ./src/utils/js/common.js
To install it, you can run: npm install --save @b/sm2
排查
1、在本地檢查時,發現 node_modules/@b/sm2 確實存在:
ls node_modules/@b/sm2 # ✅ 有文件
ls @b/sm2 # ❌ 報錯,因為不會直接在根目錄生成
説明依賴安裝成功,但編譯器依然提示找不到。
2、檢查 package.json 的 main 字段
// package.json
{
"name": "@b/sm2",
"main": "dist/index.js"
}
發現main字段配置的入口不對,於是先在node_modules裏面直接修改正確的main字段,發現問題解決了。趕緊去修改npm包的源碼,重新發版,至此,問題解決。
擴展
對package.json的main和bin字段一直容易混淆,這裏重新查了一下: