Handlebars.js: Menggunakan Handlebars dengan peringatan webpack memerlukan.ekstensi tidak didukung

Dibuat pada 4 Feb 2015  ·  10Komentar  ·  Sumber: handlebars-lang/handlebars.js

Apakah ada cara untuk menghapus atau menonaktifkan peringatan ini saat memuat Handlebars dengan Webpack?

PERINGATAN di ./~/handbars/lib/index.js
require.extensions tidak didukung oleh webpack. Gunakan pemuat sebagai gantinya.

PERINGATAN di ./~/handbars/lib/index.js
require.extensions tidak didukung oleh webpack. Gunakan pemuat sebagai gantinya.

PERINGATAN di ./~/handbars/lib/index.js
require.extensions tidak didukung oleh webpack. Gunakan pemuat sebagai gantinya.

Komentar yang paling membantu

@kpdecker @seeliang : Saya hanya ingin memberi tahu orang lain bahwa setang aliasing berfungsi.

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

Terima kasih @kpdecker.

Semua 10 komentar

Saya akan merekomendasikan prakompilasi menggunakan sesuatu seperti handlebars-loader dan menggunakan modul handlebars/runtime . Jika tidak, Anda harus menggunakan salah satu build sisi klien melalui bower karena tidak memiliki kode khusus node ini.

Saya akan merekomendasikan prakompilasi menggunakan sesuatu seperti handlebars-loader dan memanfaatkan modul handlebars/runtime.

@kpdecker Bagaimana kita melakukannya? Saya memiliki setang 1.3.0 dan setang-loader ^1.0.2 keduanya diinstal, kemudian saya memiliki modul AMD yang terlihat seperti ini:

define([
  'hbs!path/to/template' // path/to/template.hbs
],
function(template) {
  // ...
});

dan dalam konfigurasi webpack saya punya:

{
  resolveLoader: {
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'hbs': 'handlebars-loader'
    }
  },
}

sehingga hbs! dipetakan ke handlebars-loader. Kemudian ketika saya menjalankan webpack, saya mendapatkan peringatan yang familier:

WARNING in /some/absolute/path/~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.

Apa yang saya lewatkan? Apa yang harus saya lakukan dengan handlebars/runtime ?

Baiklah, jadi menambahkan alias untuk setang tampaknya telah menghilangkan peringatan:

{
  resolve: {
    modulesDirectories: ['node_modules', 'src'],
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'handlebars': 'handlebars/runtime.js'
    }
  },
  resolveLoader: {
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'hbs': 'handlebars-loader'
    }
  }
}

Sepertinya itu triknya, tetapi saya masih memiliki kesalahan lain untuk diketahui sebelum apa pun dapat berjalan, maka saya akan tahu apakah ini berhasil.

Hai , @kpdecker ,

Terima kasih atas tanggapan Anda.
itu jenis bekerja.

saya mengalami masalah yang sama, cukup menarik jika saya menambahkan bagian "resolve" @trusktr ('handbars/runtime.js') menjalankan webpack dan saya akan mendapatkan "Handbars.compile is not a function"

Apakah saya melewatkan sesuatu?

terimakasih banyak

Runtime tidak termasuk compiler. Anda harus mengkompilasi template terlebih dahulu, yang merupakan praktik terbaik. Jika Anda benar-benar perlu mengkompilasi template pada klien dan tidak masalah dengan biaya (permulaan dan ukuran file), maka Anda akan ingin alias setang menjadi sesuatu seperti handlebars/dist/handlebars.js

Terima kasih @kpdecker ,
saya akan mencobanya

Saya juga telah mengajukan #1102 untuk melihat apakah ini dapat dibuat lebih bersih untuk orang-orang yang menginginkan seluruh runtime.

@kpdecker @seeliang : Saya hanya ingin memberi tahu orang lain bahwa setang aliasing berfungsi.

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

Terima kasih @kpdecker.

Untuk yang lain cari disini

Ini adalah solusi terbaik yang saya temukan
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
di sini https://github.com/pcardune/handbars-loader/issues/110#issuecomment -358681867

Terima kasih kepada @mAAdhaTTah

UPD:

//fix handlebars warnings
config.resolve.alias = {
    ...config.resolve.alias,
    'handlebars/runtime': 'handlebars/dist/cjs/handlebars.runtime',
    'handlebars': 'handlebars/dist/cjs/handlebars.runtime',
};
const nodeExternals = require('webpack-node-externals');
module.exports = {
  externals: [nodeExternals()]
}

Juga bekerja.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat