我正在使用 if (dic.keySet().contains(line2[commonCol])
{
//Get the whole line from the first file.
String firstPart = dic.get(line2[commonCol]);
//Gets the line from the second file, without the common column.
String secondPart = String.join (Arrays.copyOfRange(line2, 1, line2.length -1), ",");
// Join together and put in Hashmap.
dic.put(line2[commonCol], String.join (firstPart, secondPart));
}
else
{
// create a new entry and pre-pend it with default values
// for the columns of file1
String firstPart = String.join(",","some", "default", "values")
String secondPart = String.join (Arrays.copyOfRange(line2, 1, line2.length -1), ",");
dic.put(line2[commonCol], String.join (firstPart, secondPart));
}
的脚本部分来强制解决问题:
package.json
在“解决方案”部分,我输入了具有指定版本的"preinstall": "npx npm-force-resolutions"
:
graceful-fs
当我运行"resolutions": {
"graceful-fs": "^4.2.4",
},
时,所有内容均已正确安装,因此会考虑设置的版本。但是后来当我安装附加模块时,例如npm i
,我设置的版本被扔掉了,在某些依赖项中我遇到了npm i random-package
和其他低版本。
如果我清除了node_modules文件夹并再次运行graceful-fs@1.2.3
,一切都会恢复正常。
我还尝试将分辨率设置为更具体,例如
npm i
但这没有帮助。
我也尝试过:
但没有运气。
我想念什么?
答案 0 :(得分:4)
自动执行此操作的最佳解决方案是修改上述预安装脚本:
<块引用>"preinstall": "npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions",
答案 1 :(得分:0)
嗨,@ NthDegree对我而言唯一有效的方法是先运行正常的npm安装,然后将packages-lock.json文件添加到git中。完成此操作后,当您添加“ preinstall”:“ npx npm-force-resolutions”时,它将始终将依赖项分辨率更新为提到的版本。
我不确定向git中添加packages-lock.json文件是好是坏,但是通过使用此方法,CI / CD管道也可以正常工作。
答案 2 :(得分:0)
在分辨率部分,您必须修复版本
"resolutions": {
"graceful-fs": "4.2.4",
},
答案 3 :(得分:0)
最好的方法是将 preinstall
脚本更改为:
"preinstall": "([ ! -f package-lock.json ] && npm install --package-lock-only --ignore-scripts --no-audit); npx npm-force-resolutions"
当您的初始 package-lock.json 不存在时,它会运行 npm install
来创建它。