Импорт MDCRipple в определение пользовательского элемента с использованием не относительного пути - PullRequest
0 голосов
/ 17 октября 2018

Я следовал инструкциям на https://material.io/develop/web/docs/getting-started/, и конечный результат работает, но создание пользовательского элемента для добавления в микс не удается.

my-button.js

import MDCRipple from '@material/ripple';

class MyButton extends HtmlElement {
  static get tag() { return 'my-button'; }
}

customElements.define(MyButton.tag, MyButton);

но ошибки сервера разработки веб-пакета:

Uncaught TypeError: Не удалось разрешить спецификатор модуля "@ material / ripple".Относительные ссылки должны начинаться с "/", "./" или "../".

. Изменение относительного пути приводит только к ошибке при импорте из MDCRipple.

Я почти уверен, webpack.config.js может решить эту проблему, но для меня это ново, и добавление записи для my-button.js не помогло.

webpack.config.js

const autoprefixer = require('autoprefixer');

module.exports = {
  entry: ['./app.scss', './app.js'],
  output: {
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: 'bundle.css',
            },
          },
          {loader: 'extract-loader'},
          {loader: 'css-loader'},
          {loader: 'postcss-loader',
            options: {
              plugins: () => [autoprefixer()],
            },
          },
          {
            loader: 'sass-loader',
            options: {
              includePaths: ['./node_modules'],
            },
          }
        ],
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        query: {
          presets: ['es2015'],
          plugins: ['transform-object-assign']
        },
      }
    ],
  },
};

В случае необходимости кнопка включается через (index.html)

<script type="module" src="my-button.js"></script> 

Структура каталогов:

node_modules/
my-button.js
index.html
package.json
webpack.config.js

package.json

devDependencies": {
  "@webcomponents/webcomponentsjs": "^2.1.3",
  "autoprefixer": "^9.2.1",
  "babel-core": "^6.26.3",
  "babel-loader": "^7.1.5",
  "babel-plugin-transform-object-assign": "^6.22.0",
  "babel-preset-es2015": "^6.24.1",
  "css-loader": "^1.0.0",
  "extract-loader": "^3.0.0",
  "file-loader": "^2.0.0",
  "glob": "^7.1.3",
  "lit-html": "^0.12.0",
  "material-components-web": "^0.40.1",
  "node-sass": "^4.9.4",
  "postcss-loader": "^3.0.0",
  "sass-loader": "^7.1.0",
  "webpack": "^3.12.0",
  "webpack-dev-server": "^2.11.3"
}
...