第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Webpack 文件加載器輸出 [object Module]

Webpack 文件加載器輸出 [object Module]

動(dòng)漫人物 2022-01-13 15:13:01
我正在使用帶有HtmlWebpackPlugin,html-loader和file-loader. 我有一個(gè)簡單的項(xiàng)目結(jié)構(gòu),其中我不使用任何框架,而只使用打字稿。因此,我將我的 HTML 代碼直接寫入index.html. 我也使用這個(gè) HTML 文件作為我在HtmlWebpackPlugin.正如所有網(wǎng)站一樣,我需要在我的資產(chǎn)文件夾中放置一個(gè)引用 PNG 的圖像。file-loader應(yīng)該正確加載文件將新文件名放在src標(biāo)簽內(nèi),但這不是正在發(fā)生的事情。相反,作為src標(biāo)簽的值,我有[object Module]. 我假設(shè)它會發(fā)出一些對象,并且在運(yùn)行它的方法file-loader時(shí)它是這樣表示的。.toString()但是,我可以看到file-loader已成功處理文件并以新名稱將其發(fā)送到輸出路徑。我沒有錯(cuò)誤。這是我的 webpack 配置和index.html.const projectRoot = path.resolve(__dirname, '..');{  entry: path.resolve(projectRoot, 'src', 'app.ts'),  mode: 'production',  output: {    path: path.resolve(projectRoot, 'dist'),    filename: 'app.bundle.js'  },  resolve: {    extensions: ['.ts', '.js']  },  module: {    rules: [      {        test: /\.html$/i,        use: 'html-loader'      },      {        test: /\.(eot|ttf|woff|woff2|svg|png)$/i,        use: 'file-loader'      },      {        test: /\.scss$/i,        use: [          {            loader: MiniCssExtractPlugin.loader,            options: {              hmr: false            }          },          {            loader: 'css-loader',            options: {              sourceMap: false            }          },          {            loader: 'sass-loader',            options: {              sourceMap: false            }          }        ]      },      {        exclude: /node_modules/,        test: /\.ts$/,        use: 'ts-loader'      }    ]  },  plugins: [    new CleanWebpackPlugin(),    new HtmlWebpackPlugin({      template: path.resolve(projectRoot, 'src', 'index.html')    }),    new MiniCssExtractPlugin({      filename: '[name].[hash].css',      chunkFilename: '[id].[hash].css',      ignoreOrder: false    })  ]};
查看完整描述

3 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

根據(jù)文件加載器文檔:


默認(rèn)情況下,file-loader 生成使用 ES 模塊語法的 JS 模塊。在某些情況下,使用 ES 模塊是有益的,例如在模塊連接和搖樹的情況下。


似乎 webpack 將 ES 模塊require()調(diào)用解析為如下所示的對象:{default: module},而不是扁平化模塊本身。這種行為有些爭議,本期對此進(jìn)行了討論。


因此,要讓您的src屬性正確解析,您需要能夠訪問default導(dǎo)出模塊的屬性。如果您使用的是框架,您應(yīng)該能夠執(zhí)行以下操作:


<img src={require('assets/logo.png').default}/> <!-- React -->

<!-- OR -->

<img src="require('assets/logo.png').default"/> <!-- Vue -->

或者,您可以啟用文件加載器的 CommonJS 模塊語法,webpack 將直接解析為模塊本身。esModule:false在你的 webpack 配置中設(shè)置。


webpack.config.js:


 {

        test: /\.(png|jpe?g|gif)$/i,

        use: [

          {

            loader: 'file-loader',

            options: {

              esModule: false,

            },

          },

        ],

      },


查看完整回答
反對 回復(fù) 2022-01-13
?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

esModule: false在您的file-loader配置中建議的修復(fù)是當(dāng)前最好的解決方法。

然而,這實(shí)際上是一個(gè)在html-loader這里被跟蹤的錯(cuò)誤:https ://github.com/webpack-contrib/html-loader/issues/203

看起來 ES Module 支持已添加到file-loader、css-loader和其他朋友,但html-loader錯(cuò)過了。

修復(fù)此錯(cuò)誤后,最好刪除esModule: false并簡單地升級html-loader,因?yàn)?ES 模塊提供了一些小好處(如文檔中所述)

或者,如果(像我一樣),您發(fā)現(xiàn)這個(gè)問題是因?yàn)槟鸁o法從 CSS(而不是從 HTML)加載圖像,那么修復(fù)只是升級css-loader,無需禁用 ES 模塊。


查看完整回答
反對 回復(fù) 2022-01-13
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

剛剛將我的文件加載器更新為 ^5.0.2 分鐘前。

我知道esModule: false是建議的修復(fù),但這對我不起作用。

我的解決方法<img src={require('assets/logo.png').default}/>很奇怪。第一次使用.default,但它工作。


查看完整回答
反對 回復(fù) 2022-01-13
  • 3 回答
  • 0 關(guān)注
  • 358 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號