Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度ng构建--目标=生产给定错误_Angular_Build_Angular Cli_Production - Fatal编程技术网

Angular 角度ng构建--目标=生产给定错误

Angular 角度ng构建--目标=生产给定错误,angular,build,angular-cli,production,Angular,Build,Angular Cli,Production,我已经使用Angular CLI创建了一个新的Angular项目 我使用的版本有: 角度Cli:1.0.2 角度:4.0.0 我已经在其中添加了很多代码,但是现在,当我使用下面的命令构建我的项目时,我会遇到很多错误 ng build--target=production--env=staging 错误: /src/app/views/signup/signup.component.html(21,86):属性“email”受保护,只能在类“SignUpComponent”及其子类中访问 /src

我已经使用Angular CLI创建了一个新的Angular项目

我使用的版本有:

角度Cli:1.0.2

角度:4.0.0

我已经在其中添加了很多代码,但是现在,当我使用下面的命令构建我的项目时,我会遇到很多错误

ng build--target=production--env=staging

错误:

/src/app/views/signup/signup.component.html(21,86):属性“email”受保护,只能在类“SignUpComponent”及其子类中访问

/src/app/views/signup/signup.component.html(26,80):属性“password”受保护,只能在类“SignUpComponent”及其子类中访问


有人能在这方面帮助我吗?我怎样才能消除这些错误?当我省略
--target=production
时,生成成功,但在过去,我遇到了一个问题,即在不指定目标浏览器缓存的情况下,旧部署版本和用户必须删除浏览器缓存以实现最新更改/部署。

您的电子邮件和密码属性是否定义为私有?它们是否用于组件的模板中?然后,它们需要从私人变为公共

使用Angular CLI的生产模式时,会自动获得以下信息:

  • --aot
    设置为true
  • --输出哈希设置为all(指纹资源)
  • --sourcemaps
    设置为false
  • --extract css
    设置为true(生成全局样式的真实css文件,而dev生成.js文件作为重建优化)
  • 如果在CLI json中配置,则添加服务工作程序
  • 将模块中的
    process.env.NODE_env
    替换为
    production
    值(对于某些库,如react,这是必需的)
  • 在代码上运行异常
有关更多信息,请参见此:


最有可能产生这些错误的是aot编译器。aot编译器在TypeScript中编译模板,因此会生成更多类型错误。因此,另一种选择是在不使用aot的情况下使用
--prod

您可以尝试设置电子邮件和密码的公共可见性。

是的,电子邮件和密码在组件中受到保护,但在angular cli/angular的早期版本中,它起到了作用。那么,我应该公开它们还是使用--aot=false?公开它们。。。AOT对于生产性能是必需的。我不确定CLI的哪个版本开始转换——对于生产模式,AOT为true。但我的猜测是,这就是它以前起作用的原因。正如P.莫罗尼提到的。。。使用--aot=false并不是一个好的选择,因为aot(提前编译器)可以提高启动性能。