замещать - PullRequest
       16

замещать

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

Я сталкиваюсь с проблемой, с которой все уже сталкивались, но, несмотря на все предложенные решения, никто не исправляет мою проблему.

На самом деле у нас есть гибридное приложение (AngularJS и Angular8), использующее Webpack4 и ts-loader. Мы загрузили все наши библиотеки, используя теги, и все работало нормально.

Моя настоящая работа состоит в том, чтобы удалить эти теги сценариев и установить вместо них node_modules. Все работает, кроме jquery.

Действительно, в режиме разработки все нормально, потому что я использую devtool: 'eval-source-map', и в этой ситуации jquery встречается везде, но когда я хочу сгенерировать свой пакетный файл вВ рабочем режиме без использования исходной карты jquery больше не обнаруживается.

А факт использования исходной карты значительно увеличивает размер файла.

Вот мои конфиги веб-пакета:

const path = require('path');
const webpack = require('webpack');

module.exports = {
    entry: {
        app: path.join(__dirname, '/main.ts'),
        dashboard: path.join(__dirname, '/main.dashboard.ts'),
    },
    // devtool: 'eval-source-map',
    output: {
        filename: '[name].bundle.js',
        publicPath: "/dist",
        pathinfo: true,
    },
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                loader: 'ts-loader',
                exclude: /node_modules/,
            },
            {
                test: /\.(html)$/,
                use: {
                    loader: 'html-loader',
                }
            },
            {
                test: /\.css/i,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test: /\.(png|woff|woff2|eot|ttf|svg)$/,
                loader: 'url-loader?limit=100000'
            }
        ]
    },
    plugins: [
        new webpack.ContextReplacementPlugin(
            /(.+)?angular(\/)core(.+)?/,
            path.join(__dirname, '/'), //location of src
            {} //a map of our routes
        ),
        new webpack.ProvidePlugin({
            $: 'jquery',
            jQuery: 'jquery'
        })
    ],
    resolve: {
        extensions: [".webpack.js", ".web.js", ".tsx", ".ts", ".js"]
    }
};

В моем файле package.json:

"dependencies": {
...
    "jquery": "^3.1.0"
  },
"devDependencies": {
    "@types/jquery": "^3.3.31"
  },

Буду признателен за любую помощь, Заранее спасибо,

1 Ответ

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

Добавьте jQuery к angular.json. Найдите свойство «scripts» (у вас может быть больше одного из них) и добавьте

"scripts": [ "../node_modules/jquery/dist/jquery.min.js" ]

(или совместимо, в зависимости от фактического пути к dist в jQuery).

...