前幾天 build server build 出來的專案有 exception,顯示是版本問題,一整個疑惑我不是在 package.json 把 dependencies 的版號都寫死了嗎,怎麼還會有版本問題 ?
基本上我是 JAVA 後端工程師,會需要寫 Node 是不得已的,所以 Node 沒學好也是理所當然的,事情發生的原因是專案的 package.json 的 dependencies 長這樣
"dependencies": {
"aws-iot-device-sdk": "^2.2.1",
}
我很直覺的認為捉的版號就是 2.2.1
但實際開 package-lock.json 來看實際版本時發現,4月build時捉的版本是 2.2.6,8月build時捉的版本是 2.2.11,都不是指定的 2.2.1
查了一下文件 發現誤會大了
- ~version “Approximately equivalent to version”, will update you to all future patch versions, without incrementing the minor version. ~1.2.3 will use releases from 1.2.3 to <1.3.0.
- ^version “Compatible with version”, will update you to all future minor/patch versions, without incrementing the major version. ^2.3.4 will use releases from 2.3.4 to <3.0.0.
簡單的說在版號前加 ~ 或 ^ 會是有條件的捉更新版本,要固定版本就不要寫任何符號在前面
直接把 ^ 符號全部摘除,重跑 npm install 問題解決