Handlebars.js: webpack + memerlukan kesalahan setang

Dibuat pada 26 Jan 2016  ·  21Komentar  ·  Sumber: handlebars-lang/handlebars.js

Saya mendapatkan kesalahan berikut hanya dengan menggunakan stang yang dibutuhkan.

▶ webpack --display-modules   
Hash: bdb0fe35e2f8bde783e5
Version: webpack 1.12.12
Time: 116ms
         Asset     Size  Chunks             Chunk Names
bundle.main.js  2.82 kB       0  [emitted]  main
   [0] ./src/index.js 150 bytes {0} [built]
   [1] ./~/handlebars/lib/index.js 792 bytes {0} [built] [3 warnings] [3 errors]

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

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

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

ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../dist/cjs/handlebars/compiler/printer in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
 @ ./~/handlebars/lib/index.js 9:14-64

ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve module 'fs' in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
 @ ./~/handlebars/lib/index.js 17:11-24

ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../dist/cjs/handlebars in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
 @ ./~/handlebars/lib/index.js 7:17-50 

index.js

var handlebars = require('handlebars');

package.json

  "dependencies": {
    "handlebars": "^4.0.5"
  }

Komentar yang paling membantu

Saya menyiasatinya dengan ..

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

di konfigurasi webpack saya

Semua 21 komentar

Seperti disebutkan dalam #1102 menambahkan baris
"browser": "dist/handlebars.js",
ke package.json setang memecahkan ini untuk saya.

Kedengarannya seperti masalah dengan Webpack, bukan Handlebars.
Jalur default normal untuk semua file inti modul node adalah /node_modules/module_name/dist.

Di situlah aplikasi simpul akan menganggap mereka berada; ini berarti Webpack sedang menangani require(); berbeda dari simpul.

Saya menyiasatinya dengan ..

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

di konfigurasi webpack saya

terima kasih @gilesbradshaw :+1: :senyum:

@abhisekp apakah ini diselesaikan? Silakan tutup jika ya.

@rafde Saya belum memeriksanya tetapi menutup masalah ini karena masalah telah dibuat jelas dan solusi yang jelas disarankan.

Terima kasih untuk pengingatnya. :merah:

masalah masih mereproduksi jika saya memerlukan setang di suatu tempat di .js:

var Handlebars = require('handlebars');
Handlebars.registerHelper('greet', function(name) {
            return 'Hello, name=' + name + '!';
});

tetapi jika saya menghapus baris ini

var Handlebars = require('handlebars');

masalah hilang

@gilesbradshaw
Terima kasih banyak!

Saya juga mendapatkan kesalahan ini saat menggunakan setang dengan proyek Angular 2 CLI. Saya tidak dapat mengubah konfigurasi webpack saya karena tim Angular CLI memutuskan untuk menyembunyikan detail webpack dari pengguna Angular CLI dan mereka tidak secara resmi mendukung modifikasi konfigurasi webpack.

@oocx Anda bisa mengimpor file JS dari folder node_modules seperti itu

import 'handlebars/dist/handlebars.min.js';

Ini bekerja dengan baik!

Agar ini berfungsi dalam proyek sudut 4 saya harus melakukan ini:
import * as handleBars from 'stang/dist/stang';

biasanya saya hanya akan melakukan ini:
import * sebagai handleBars dari 'stang';

Baris di atas berfungsi dengan baik dalam proyek TypeScript di node, tetapi tidak di angular 4.

HandleBars adalah satu-satunya proyek di mana saya harus mengimpor seperti ini. Itu membuat saya khawatir saya akan memiliki masalah di jalan. Sepertinya HandleBars tidak cocok dengan webpack angular.

Saya bisa melihat apakah ada yang membuat proyek contoh minimal yang mereproduksi masalah. Tidak ada janji untuk "kapan", meskipun ...

@swilliams-a3digital Mendapatkan Could not find a declaration file for module mendeklarasikan modul 'setang' atau menambahkan @types/stang tidak membantu. Bagaimana Anda memecahkan ini?

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',
};

Ini terbelakang.
Pustaka handlebars seharusnya memperbaiki bug ini.
Namun mereka mengabaikan dan mengabaikan.

Solusinya adalah dengan mengganti:

import Handlebars from 'handlebars'

dengan:

import Handlebars from 'handlebars/dist/cjs/handlebars'

@catamphetamine jika Anda memiliki solusi yang baik untuk masalah ini, Anda dipersilakan untuk mengajukan permintaan tarik. Selama itu tidak merusak apa pun, saya akan menggabungkan dan menerbitkan versi baru. Hal-hal seperti const Handlebars = require('handlebars') di NodeJS dan pengaturan yang ada dengan versi webpack yang lebih lama harus tetap berfungsi.

Tentang "Namun mereka mengabaikan dan mengabaikan":

Masalah dengan setang adalah tidak banyak kolaborator dan saat ini, sejauh yang saya lihat, saya satu-satunya yang aktif. Yah, kurang lebih aktif. Sekarang pukul 23:26 dan inilah saatnya saya biasanya datang untuk mengerjakan proyek pribadi saya, karena saya memiliki keluarga, pekerjaan siang hari dan hobi lainnya.

Jadi ketika Anda menulis "Namun mereka mengabaikan dan mengabaikan", tidak banyak "mereka". Hampir pasti tidak ada "mereka" yang dibayar untuk mengerjakan proyek ini. Saya membantu orang, karena menyenangkan untuk berbicara dengan orang dan karena menyenangkan untuk memecahkan masalah, memperbaiki bug dan menulis tes. Karena saya sendiri menggunakan Handlebars dalam beberapa proyek, dan karena rasanya menyenangkan untuk berdiri di atas lampu panggung dari waktu ke waktu. Tetapi saya tidak merasa bahwa itu adalah tugas saya untuk melakukannya. Jadi saya memilih masalah yang saya suka, kebanyakan yang cepat dan jelas.

Jadi, jika Anda menggunakan Handlebars dan Anda memiliki masalah dan tidak ada yang akan menyelesaikannya, mungkin Anda harus mencoba memberikan solusi sendiri.

Saya akan membuka kembali masalah ini, karena sepertinya tidak terpecahkan.

karena rasanya menyenangkan untuk berdiri di atas lampu panggung dari waktu ke waktu.

Saya melakukan opensource untuk bersenang-senang juga, meskipun tidak sepopuler perpustakaan ini.
Dan juga untuk satu atau dua baris di CV saya. Membantu mendapatkan pekerjaan yang lebih baik.
Saya dapat melihat Anda tidak mendapatkan banyak keuntungan daripada hanya bersenang-senang karena secara teknis ini bukan proyek Anda, seperti @nknapp/handbars.js
Anda mempertahankannya dan @wycats mendapatkan semua kredit dan bintang github sejauh bilah URL berjalan.
Ok, setidaknya sekarang kita tahu bahwa proyek ini tidak begitu aktif dipertahankan lagi.
Tetap saja, itu digunakan di banyak tempat (termasuk warisan), saya kira.
Misalnya, SendGrid baru-baru ini meluncurkan "template yang dapat disesuaikan" menggunakan bahasa handlebars .
https://sendgrid.com/blog/how-to-use-sendgrids-dynamic-templates-for-your-transactional-emails/
https://github.com/sendgrid/sendgrid-nodejs/issues/221

Adapun solusi yang mungkin, itu akan membagi paket menjadi handlebars dan handlebars/register seperti yang dilakukan Babel dengan babel dan babel/register .
Mereka hanya menginstal kait require() saat melakukan import 'babel/register' .
Itu akan menjadi perubahan besar untuk versi utama lainnya, tetapi saya dapat melihat kemungkinan besar tidak akan ada versi seperti itu.
Orang juga dapat membuat file di root yang disebut sesuatu seperti core.js ( module.exports = require('handlebars/dist/cjs/handlebars') ) dan kemudian pengguna Webpack akan membutuhkan handlebars/core alih-alih handlebars/dist/cjs/handlebars (bersama dengan baris di README).
Pembuat Webpack juga berasal dari Jerman.

Bagaimanapun, import Handlebars from 'handlebars/dist/cjs/handlebars' berfungsi dan saya pikir Anda tidak perlu mengubah apa pun di perpustakaan, mungkin saja menambahkan sebaris dokumentasi ke README yang untuk Webpack gunakan import Handlebars from 'handlebars/dist/cjs/handlebars' alih-alih impor biasa.

Omong-omong, saya tidak merujuk secara khusus kepada Anda karena Anda tidak meninggalkan komentar negatif sebelumnya dalam masalah ini.
Saya merujuk ke @methodbox dan komentarnya:

Kedengarannya seperti masalah dengan Webpack, bukan Handlebars.

Dan @rafde dan komentarnya:

Sepertinya ada masalah dengan pengaturan Anda karena tidak ada orang lain yang memiliki masalah ini

Komentar Anda tidak mengklaim Webpack sebagai "salah" atau apa pun sehingga tidak ada kata-kata yang salah dari pihak Anda:

Saya bisa melihat apakah ada yang membuat proyek contoh minimal yang mereproduksi masalah. Tidak ada janji untuk "kapan", meskipun ...

Anda tidak mengatakan bahwa "Webpack melakukan kesalahan, tutup masalah" jadi komentar Anda baik-baik saja.

@nknapp
Bagaimanapun, import Handlebars from 'handlebars/dist/cjs/handlebars' berfungsi dengan baik dan saya pikir Anda tidak perlu mengubah apa pun di perpustakaan.
Mungkin saja menambahkan baris ke README yang mengatakan bahwa "Jika Anda menggunakan Webpack maka import Handlebars from 'handlebars/dist/cjs/handlebars' alih-alih import Handlebars from 'handlebars' .
import Handlebars from 'handlebars/dist/cjs/handlebars' baik-baik saja dan berfungsi.

import Handlebars from 'handlebars/dist/cjs/handlebars

Bekerja untuk saya pada komentar ini.

Saya setuju dengan @catamphetamine sekalipun.

Dokumentasi yang lebih baik sangat berharga dan tidak akan membunuh siapa pun untuk menambahkan baris itu ke halaman instalasi .

Kita semua membangun hal-hal hebat dan ingin orang menggunakannya.

Tapi coba tebak, jika dokumentasinya payah... begitu juga proyeknya karena tidak seorang pun kecuali Anda yang dapat memahaminya.

Dan ingat... orang takut pada apa yang tidak mereka mengerti.

-akhir curhat-

Namun saya menghargai upaya Anda di perpustakaan.
Menjadi pengembang open source seringkali merupakan pengembaraan tanpa pamrih dan menyakitkan dengan imbalan yang sangat kecil.

Sebenarnya, saya tidak mencoba membuat orang menggunakan Handlebars. Saya hanya mencoba membantu orang yang telah memutuskan untuk menggunakannya.

Saat ini saya sedang membangun situs dokumentasi baru (setiap kali saya punya waktu tersisa) dan saya akan memasukkannya ke sana.

Harus diselesaikan di #1102

Apakah halaman ini membantu?
0 / 5 - 0 peringkat