Невозможно загрузить sp-loader для решения spfx с помощью веб-пакета - PullRequest
0 голосов
/ 29 октября 2019

мой файл машинописи включает в себя следующий импорт:

import { SPComponentLoader } from '@microsoft/sp-loader';

Но я получаю много ошибок при сборке с веб-пакетом

npx webpack --config webpack.config.js

Вот некоторые изошибки:

ОШИБКА в ./node_modules/@microsoft/sp-loader/lib/requirejs/RequireJsLoader.js Модуль не найден: Ошибка: не удается разрешить './test/RequireJsMock' в'C: \ users \ agaskell \ source \ repos \ spfxBanner \ node_modules @ microsoft \ sp-loader \ lib \ requirejs' @ ./node_modules/@microsoft/sp-loader/lib/requirejs/RequireJsLoader.js 258: 14-45@ ./node_modules/@microsoft/sp-loader/lib/requirejs/SPRequireJsComponentLoader.js @ ./node_modules/@microsoft/sp-loader/lib/starter/SPStarter.js @ ./node_modules/@microsoft/sp-loader/lib / index.js @ ./Classic/client/bootHeader.ts @ multi @ babel / polyfill ./Classic/client/bootHeader.ts

ОШИБКА в ./node_modules/@microsoft/sp-loader/lib/systemjs/SystemJsLoader.js Модуль не найден: ошибка: не удается разрешить './test/SystemJsMock' в 'C: \ users \ agaskell \ source \ repos \ spfxBanner\ node_modules @ microsoft \ sp-loader \ lib \ systemjs '

Я пытаюсь встроить свой ts-файл в js для классических сайтов SharePoint и обычно использую gulp для современных страниц, но для классических яиспользуя отдельный файл bootloader.ts и веб-пакет.

Кто-нибудь может помочь?

Вот файл webpack.config.js:

    const path = require("path");
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: "development",
  entry: ['@babel/polyfill',
    path.resolve(__dirname, './Classic/client/bootHeader.ts')],
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: "ts-loader",
        exclude: /node_modules/
      },
      {
        test: /\.(s*)css$/,
        use: [
          // fallback to style-loader in development
          process.env.NODE_ENV !== "production"
            ? "style-loader"
            : MiniCssExtractPlugin.loader,
          "css-loader",
          "sass-loader"
        ]
      },
      {
        test: /\.(png|jp(e*)g|svg)$/,
        use: [
          {
            loader: "url-loader",
            options: {
              limit: 15000, // Convert images < 8kb to base64 strings
              name: "images/[hash]-[name].[ext]"
            }
          }
        ]
      }
    ]
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: "[name].css",
      chunkFilename: "[id].css"
    })
  ],
  resolve: {
    extensions: [".tsx", ".ts", ".js"]
  },
  output: {
    filename: "classicBundleAG.js",
    path: path.resolve(__dirname, "Classic"),
    libraryTarget: "umd"
  }
};

1 Ответ

0 голосов
/ 31 октября 2019

В итоге я использовал обходной путь для этого. Я отказался от SPComponentLoader для загрузки своей начальной загрузки и вместо этого установил модули начальной загрузки локально, а затем сослался на них из своего собственного sass. Я думаю, что gulp with yeoman обычно обрабатывает зависимости SPComponentLoader, но на этот раз я использую пользовательский веб-пакет и не хочу вручную обрабатывать каждую отсутствующую зависимость.

...