Handlebars.js: Использование Handlebars с предупреждением о веб-пакете require.extentions не поддерживается

Созданный на 4 февр. 2015  ·  10Комментарии  ·  Источник: handlebars-lang/handlebars.js

Есть ли способ удалить или отключить эти предупреждения при загрузке Handlebars с помощью Webpack?

ПРЕДУПРЕЖДЕНИЕ в ./~/handlebars/lib/index.js
require.extensions не поддерживается веб-пакетом. Вместо этого используйте загрузчик.

ПРЕДУПРЕЖДЕНИЕ в ./~/handlebars/lib/index.js
require.extensions не поддерживается веб-пакетом. Вместо этого используйте загрузчик.

ПРЕДУПРЕЖДЕНИЕ в ./~/handlebars/lib/index.js
require.extensions не поддерживается веб-пакетом. Вместо этого используйте загрузчик.

Самый полезный комментарий

@kpdecker @seeliang : Я просто хочу, чтобы другие знали, что псевдонимы руля работают.

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

Спасибо @kpdecker.

Все 10 Комментарий

Я бы рекомендовал предварительно скомпилировать что-то вроде handlebars-loader и использовать модуль handlebars/runtime . В противном случае вам следует использовать одну из сборок на стороне клиента через Bower, поскольку в них нет кода, специфичного для узла.

Я бы рекомендовал предварительно скомпилировать что-то вроде handlebars-loader и использовать модуль handlebars/runtime.

@kpdecker Как бы мы это сделали? У меня установлены handlebars 1.3.0 и handlebars-loader ^ 1.0.2, затем у меня есть модуль AMD, который выглядит так:

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

и в конфигурации веб-пакета у меня есть:

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

так что hbs! сопоставляется с рулем-загрузчиком. Затем, когда я запускаю webpack, я получаю знакомые предупреждения:

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

Что мне не хватает? Что мне делать с handlebars/runtime ?

Итак, добавление псевдонима для руля, кажется, избавило от предупреждений:

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

Кажется, это хитрость, но у меня все еще есть другие ошибки, которые нужно выяснить, прежде чем что-либо сможет запуститься, тогда я узнаю, сработает ли это.

Привет, @kpdecker ,

Спасибо за ваш отзыв.
вроде работает.

у меня такая же проблема, довольно интересно, что если я добавлю раздел "разрешить" @trusktr ('handlebars/runtime.js'), запустите веб-пакет, и я получу "Handlebars.compile не является функцией"

Я что-то пропустил?

огромное спасибо

Среда выполнения не включает компилятор. Вам потребуется предварительно скомпилировать шаблон, что является наилучшей практикой. Если вам абсолютно необходимо скомпилировать шаблоны на клиенте и вас устраивает стоимость (запуск и размер файла), то вам нужно присвоить алиасу handlebars что-то вроде handlebars/dist/handlebars.js

Спасибо @kpdecker ,
я попробую это

Я также зарегистрировал #1102, чтобы узнать, можно ли сделать это чище для людей, которым нужна вся среда выполнения.

@kpdecker @seeliang : Я просто хочу, чтобы другие знали, что псевдонимы руля работают.

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

Спасибо @kpdecker.

Для других, ищущих здесь

Это лучшее решение, которое я нашел
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
здесь https://github.com/pcardune/handlebars-loader/issues/110#issuecomment -358681867

Благодаря @mAAdhaTTah

УПД:

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

Тоже работает.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги