2016-11-22 14 views
5

私のvue(2.0)+ webpackプロジェクトでは、私はvue-html-loaderを設定しますが、私の.vueファイルでimgタグは静的なsrcイメージを読み込めません。vue + webpackプロジェクトimgは静的なsrcをロードできません

<img src="/web/img/[email protected]" srcset="/web/img/[email protected]" /> 

私のブラウザは常に404エラーが出てくる:

module: { 
    loaders: [ 
     ... 
     { 
      test: /\.html$/, 
      exclude: /node_modules/, 
      loaders: ['html', 'html-minify'] 
     } 
     , { 
      test: /\.vue$/, 
      loader: 'vue' 
     } 
     ... 
    ] 
}, 
vue: { 
    ... 
    html: { 
     root: path.resolve(__dirname, './source/static'), 
     attrs: ['img:src', 'img:srcset'] 
    }, 
    loaders: { 
     css: ExtractTextPlugin.extract("css"), 
     sass: ExtractTextPlugin.extract("css!sass") 
    } 
}, 
resolve: { 
    root: [ 
     path.resolve('./source') 
    ], 
    extensions: ['', '.js', '.json', '.scss', '.html', '.css', '.vue'], 
    alias: { 
     'vue': 'vue/dist/vue.js' 
    } 
}, 

以下は私の.vueファイルです: は、以下の私のWebPACKの設定です。誰かが同じ問題を抱えましたか?

+0

静的画像には 'url-loader'が必要だと思います。 vue-cliが使用する[webpack](https://github.com/vuejs-templates/webpack)テンプレートを強くお勧めします。 https://github.com/vuejs-templates/webpack/blob/master/template/build/webpack.base.conf.js#L70 – Phil

+0

@Phiを参照してください。私はURLローダーを追加しましたが、動作しません。 – Yuga

答えて

0

私は私のために働く私のWebPACKの設定で次のようしている:

module: { 
    rules: [ 
     { 
     test: /\.vue$/, 
     loader: 'vue', 
     options: vueConfig 
     }, 
     { 
     test: /\.js$/, 
     loader: 'babel', 
     exclude: /node_modules/ 
     }, 
     { 
     test: /\.(png|jpg|gif|svg)$/, 
     loader: 'url', 
     options: { 
      limit: 10000, 
      name: '[name].[ext]?[hash]' 
     } 
     } 
    ] 
    } 

私は任意の特定の設定せずにアクセスして表示することができますsrc/assetsフォルダ内の画像を持っています。

+0

imgタグに "srcset"属性を追加しましたか? – Yuga

0

私は今あなたがすなわち

<img src="~img/[email protected]" srcset="~img/[email protected]" /> 

確保するために、~imgを経由して静止画像を参照することができ、すなわち

resolve: { 
    ... 
    alias: { 
    'vue': 'vue/dist/vue.js', 
    'img': path.resolve(__dirname, '../web/img') // or wherever it is located relative to this file 
    } 
} 

、あなたのWebPACKのエイリアス内の静的imgディレクトリのエイリアスを追加したいですhtml内で上記を解析することができます。vue-htmlローダーをウェブパックの設定に追加する必要があります:

module: { 
    loaders: [ 
    ... 
    { 
     test: /\.html$/, 
     loaders: 'vue-html' 
    } 

私はあなたの現在のHTMLローダーを上記のものに置き換えます。

しかし、このすべてはさておき - 私はstrongelyインストールをお勧めしたいため、固体のWebPACKのVUEのアプリケーションを足場の複雑さにVUE-CLI:https://github.com/vuejs/vue-cli

が次にあなたは、単にテストと機能をロールアウトすることができますWebPACKの環境:

https://github.com/vuejs-templates/webpack

は、単にそれにアプリケーションをコピーします。おそらくリファクタリングを少ししなければならないでしょうが、セットアップの時間を節約することは絶対に価値があります。

+0

私は言いましたが、ブラウザでsrcset属性は〜imgを解析できません。 "〜img"はURLの文字列部分として扱われます。 – Yuga

+0

あなたのローダーの設定を見るために更新された答え – GuyC

関連する問題