2016-02-18 60 views
3

我有一個Ember-Cli 1.13應用程序,它在公用目錄中存儲了大量圖像。現在,它將正確加載除特定組件中的圖像之外的所有圖像。Ember無法在生產中加載某些圖像

的組件被稱爲像這樣:

{{list-item url="list-url" name="List Name" price="240"}} 

內部,該組件是這樣的:

<a href="http://example.com/{{url}}"> 
    <img src="/{{url}}.png" alt='Picture of the {{name}}' /> 
    <p class="item-name">{{name}}</p> 
    ... 
</a> 

當我建立應用程序並啓動對Heroku的破路是

https://ridiculous-name-123123.herokuapp.com/list-item.png 

這與localhost路徑相同,只是顯然有一個不同的域。

所有其他圖像不與組件一起使用時可以使用。

我哪裏錯了?

回答

2

當您使用生產環境進行生產時,您的資產會經歷一些名爲fingerprinting的東西。

什麼似乎是這裏的問題是,你的「內置」的URL鏈接到未按手印的文件,一個解決辦法是將這些圖像移動到文件夾,並從被採集指紋排除,在您的ember-cli-build.js

var app = new EmberApp({ 
    fingerprint: { 
    exclude: ['myComponentImages/'] 
    } 
}); 

更好的解決方案是獲得完整的URL或傳遞一個類來更改顯示的圖像,因爲它看起來像是靜態資產而不是用戶上傳的內容。

+0

謝謝你,這很棒,我不知道Ember正在這樣做。 – user3162553

+0

如果你想在JavaScript中引用它,你會如何獲得指紋?是否有函數返回調整後的文件名(例如'Ember.getFingerprint('/ assets/asdf.png')'返回類似'/ assets/asdf-80938294jjx809sf.png')? – redbmk

+0

我們可以澄清一下'['myComponentImages /']'...和一個示例路徑嗎? – sheriffderek