インストール後、スクリプトは実行中ですが、cp -f ./foo/a.json ./node_modules/bar/a.json
ファイルがすでに存在するというエラーが原因で失敗します(ファイルは存在しますが、私のバージョンで上書きしようとします)。
ファイルが存在しても、そのフラグのポイントは-f
強制上書きを保証するものではありませんか?
可能なエイリアスをオーバーライドしようとしましたが、結果は同じでしたcp
。\cp
これは実行中のdockerビルド実行内で発生しnpm install
、npm postinstallスクリプトが起動します。
以下は、要求されたDockerビルド出力の例です。
#10 82.12 npm WARN lifecycle [email protected]~postinstall: cannot run in wd [email protected] node -e "try{require('./postinstall')}catch(e){}" (wd=/node_modules/core-js)
#10 82.22
#10 82.22 > [email protected] postinstall /usr/local/lib/node_modules/xxx-cli
#10 82.22 > command cp -f ./foo/a.json ./node_modules/xxx-library/assets/a.json
#10 82.22
#10 82.31 cp: can't create './node_modules/xxx-library/assets/a.json': File exists
助けてくれてありがとう!
答え1
-f
いいえ、それは目的ではありません。cp
GNU coreutils'cp
基本書くコンテンツ既存の宛先ファイル。 (を使用して明示的に無効にする必要があります-n
。)
ターゲットファイルが存在するが何らかの理由で開くことができない場合は、ファイルを変更して削除し、新しいファイルを作成してファイル-f
を元のデータで埋めます。これは解決策でもなく、現在の問題でもないようです。
したいかもしれません非常にエラーメッセージの内容をそのまま記録します。
とにかくcat ./foo/a.json > ./node_modules/bar/a.json
効果がありますか?cp ./foo/a.json ./node_modules/bar/a.json
ターゲットの内容をソースで上書きするという点では、実際にあなたのものと同じです。
答え2
答えなので質問から移動しました。
知っていると、これらすべての質問は無意味です。問題のdockerfileは-g
グローバルにインストールされたモジュールを使用してnpm installを呼び出すため、bcos権限のファイルを上書きできないか、node_modules
そのファイルが私が思う場所にないためです。取り外し-g
て交換すると、ci
すべてが期待どおりに機能します。