Handlebars.js: Die Verwendung von Handlebars mit Webpack-Warnung require.extensions wird nicht unterstützt

Erstellt am 4. Feb. 2015  ·  10Kommentare  ·  Quelle: handlebars-lang/handlebars.js

Gibt es eine Möglichkeit, diese Warnungen beim Laden von Handlebars mit Webpack zu entfernen oder zu deaktivieren?

WARNUNG in ./~/handlebars/lib/index.js
require.extensions wird von Webpack nicht unterstützt. Verwenden Sie stattdessen einen Lader.

WARNUNG in ./~/handlebars/lib/index.js
require.extensions wird von Webpack nicht unterstützt. Verwenden Sie stattdessen einen Lader.

WARNUNG in ./~/handlebars/lib/index.js
require.extensions wird von Webpack nicht unterstützt. Verwenden Sie stattdessen einen Lader.

Hilfreichster Kommentar

@kpdecker @seeliang : Ich möchte nur andere wissen lassen, dass Aliasing-Lenker funktionieren.

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

Danke @kpdecker.

Alle 10 Kommentare

Ich würde empfehlen, mit so etwas wie handlebars-loader vorzukompilieren und das Modul handlebars/runtime zu verwenden. Andernfalls sollten Sie einen der clientseitigen Builds über Bower verwenden, da diese keinen dieser knotenspezifischen Codes enthalten.

Ich würde empfehlen, mit so etwas wie handlebars-loader vorzukompilieren und das handlebars/runtime-Modul zu verwenden.

@kpdecker Wie würden wir das machen? Ich habe handlebars 1.3.0 und handlebars-loader ^1.0.2 beide installiert, dann habe ich ein AMD-Modul, das so aussieht:

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

und in der Webpack-Konfiguration habe ich:

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

damit das hbs! dem Lenkerlader zugeordnet ist. Wenn ich dann webpack ausführe, erhalte ich diese bekannten Warnungen:

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

Was vermisse ich? Was soll ich mit handlebars/runtime machen?

In Ordnung, das Hinzufügen eines Alias ​​​​für Lenker scheint die Warnungen beseitigt zu haben:

{
  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'
    }
  }
}

Das scheint der Trick zu sein, aber ich muss noch andere Fehler herausfinden, bevor überhaupt etwas ausgeführt werden kann, dann werde ich wissen, ob das funktioniert.

Hallo @kpdecker ,

Vielen Dank für dein Feedback.
es funktioniert irgendwie.

Ich habe das gleiche Problem, es ist ziemlich interessant, dass, wenn ich den Abschnitt "resolve" von @trusktr ('handlebars/runtime.js') hinzufüge, das Webpack ausgeführt wird und ich die Meldung "Handlebars.compile is not a function" erhalte.

Habe ich etwas verpasst?

Danke vielmals

Die Laufzeit enthält nicht den Compiler. Sie müssen Ihre Vorlage vorkompilieren, was die beste Vorgehensweise ist. Wenn Sie unbedingt Vorlagen auf dem Client kompilieren müssen und mit den Kosten (Start und Dateigröße) einverstanden sind, sollten Sie handlebars auf etwas wie handlebars/dist/handlebars.js

Danke @kpdecker ,
Ich werde das versuchen

Ich habe auch #1102 eingereicht, um zu sehen, ob dies für Leute, die die gesamte Laufzeit wollen, sauberer gemacht werden kann.

@kpdecker @seeliang : Ich möchte nur andere wissen lassen, dass Aliasing-Lenker funktionieren.

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

Danke @kpdecker.

Für andere, die hier suchen

Dies ist die beste Lösung, die ich gefunden habe
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
hier https://github.com/pcardune/handlebars-loader/issues/110#issuecomment -358681867

Danke an @mAAdhaTTah

AKTUALISIERT:

//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()]
}

Funktioniert auch.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen