概要
JSからelement.style.backgroundImage
などを設定するとき、
画像のパスを普通に
require("path").resolve('../image/hoge.jpg')
や
__dirname + '/image/hoge.jpg'
でurl()
に渡すと失敗する
結論
(Windowsでは)__dirname
のパスの取得やrequire("path").resolve()
による相対パスの解決後のパスの区切りは\
しかし、CSSのurl()
では\
をエスケープとみなすので/
に置換しなければならない
つまり
element.style.backgroundImage = 'url(' + require("path").resolve(path).replace(/\\/g, '\/') + ')'
としなければCSSは正しいパスを解釈しない。
検証環境
- Windows7 Professional 64bit
- electron-prebuilt 0.36.4
- node v5.2.0