0

因为我想@angular/service-worker在生产模式下加载我的 only,所以我在我的 webpack 配置中添加了以下内容:

new webpack.DefinePlugin({
   'process.env': {
        'NODE_ENV': JSON.stringify(isDevBuild ? 'dev' : 'prod')
    }
})

但是,如果我尝试将其用作

imports: [
    ServiceWorkerModule.register('/ngsw-worker.js', { enabled: (process.env.NODE_ENV === 'prod') })
]

然后它在开发模式下按预期工作(即,如果我与它相等,'dev'则使用它而不是其他方式),但在生产模式下,服务工作者永远不会加载,并且没有编译时或运行时错误。此外,如果我将其记录到控制台,则该值true符合预期,如果我设置了enabled:true.

我在我的 webpack 配置中使用它

new AngularCompilerPlugin({
    tsConfigPath: './tsconfig.json',
    entryModule: path.join(__dirname, 'ClientApp/app/app.module#AppModule')
})
4

1 回答 1

0

设法通过使用解决此问题

new webpack.DefinePlugin({
    'process.env':{
        'NODE_ENV': JSON.stringify(isDevBuild ? 'dev' : 'prod'),
        'ISDEV': isDevBuild ? true : false,
     }
}),

并改用ISDEV参数。出于某种原因,AOT 编译器似乎无法在此类比较中正常工作。我很想知道原因!

于 2018-02-28T19:04:48.740 回答