使用Ionic,Angular,Webpack和Typescript工作的DefinePlugin不起作用

时间:2018-04-27 09:00:24

标签: angular typescript npm webpack ionic3

我需要使用webpack Bundle中的DefinePlugin注入我的process.env变量,我在webpack配置中得到以下代码:

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 {

但是当我使用yarn或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)

我在谷歌找不到任何类似的问题。 谢谢你的帮助。

于连。

2 个答案:

答案 0 :(得分:2)

我在这里遇到了同样的错误。为了解决这些问题,我要做的事情是:确保在devDependencies中添加了所有加载程序,然后将这些加载程序升级为最新版本。

请再次检查。

答案 1 :(得分:0)

尝试这样做

new webpack.DefinePlugin({
  'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
})