DefinePlugin с Ionic, Angular, Webpack и Typescript не работает - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужно добавить мою переменную process.env с помощью DefinePlugin в пакет веб-пакета, в конфигурации веб-пакета есть следующий код:

plugins: [
    new webpack.DefinePlugin({
        'process.env': JSON.stringify(process.env)
    }),
    ionicWebpackFactory.getIonicEnvironmentPlugin(),
    ionicWebpackFactory.getCommonChunksPlugin()
],

В моем package.json у меня есть эта конфигурация:

    "@ionic/app-scripts": "3.1.9",
    "@types/jasmine": "^2.8.6",
    "@types/node": "^9.6.6",
    ...
    "html-loader": "^0.5.5",
    ....
    "null-loader": "^0.1.1",
    "ts-loader": "^4.0.0",
    "ts-node": "^6.0.0",
    "tslint": "^5.9.1",
    "tslint-eslint-rules": "^5.1.0",
    "typescript": "~2.6.2",
    "webpack": "^4.6.0"
 },
 "config": {
    "ionic_webpack": "./config/webpack.config.js"
 },

У меня есть сервис, который использует process.env, внедренный плагином:

import { Injectable } from '@angular/core';

declare var process: {
   env: any
};

@Injectable()
export class ConfigurationService {

Но когда я компилирую даже с использованием пряжи или npm, я получаю следующую ошибку:

 [10:28:04]  ionic-app-script task: "build"
 [10:28:04]  TypeError: Cannot read property 'compilation' of undefined
 TypeError: Cannot read property 'compilation' of undefined
      at DefinePlugin.apply ...\node_modules\webpack\lib
 \DefinePlugin.js:42:18)
 at Compiler.apply ( ...\node_modules\tapable\lib\Tapable.js:375:16)

И я не смог найти подобную проблему в Google. Спасибо за вашу помощь.

Julien.

Ответы [ 2 ]

0 голосов
/ 20 июня 2018

Я встретил ту же ошибку здесь. Чтобы исправить это, я сделал следующее: убедитесь, что все загрузчики были добавлены в devDependencies, и обновите их до последней версии.

Пожалуйста, проверьте еще раз.

0 голосов
/ 27 апреля 2018

попробуйте сделать это

new webpack.DefinePlugin({
  'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...