【发布时间】:2019-09-13 06:08:24
【问题描述】:
Angular CLI 7 应用程序有一个非常奇怪的问题,在运行“ng serve”时一切正常。但是在运行“ng serve --prod”时。在提供或构建应用程序时,我没有收到任何错误。确切的问题在于 array.filter(x => x.id === myVariable)
我尝试使用 --aot=false、--build-optimizer=false 运行应用程序,但似乎没有任何帮助,并且每当添加 prod 标志以服务或构建 array.filter 时,它都不起作用。
这里是环境细节:
Angular CLI: 7.0.4
Node: 8.10.0
OS: linux x64
Angular:
Package Version
------------------------------------------------------
@angular-devkit/architect 0.10.4
@angular-devkit/core 7.0.4
@angular-devkit/schematics 7.0.4
@schematics/angular 7.0.4
@schematics/update 0.10.4
rxjs 6.3.3
typescript 3.1.3
angular.json:
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": false,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
},
这是我的恶魔密码:
searchUser(id: number) {
const user = this.usersList.filter(x => x.id === id);
console.log(user);
return user;
}
userList 是 Json 对象的数组,例如:
[
{id: 1, name: "John"},
{id: 2, name: "Mary"},
etc...
]
当使用“ng serve”运行应用时,searchUser 返回正确的用户对象并将用户对象打印到控制台。
当使用“ng serve --prod”运行应用程序时,不会返回任何内容,控制台日志只显示未定义。
由于没有明显的错误(在服务或构建期间)我没有想法,为什么它不工作或者我应该更新一些包等。我可以重写那部分而不使用 lambda 表达式,如果这是问题,但我相信这应该可行。
谢谢!
【问题讨论】:
-
userList是如何被填充的?是否有异步调用从后端获取用户列表?到目前为止,您发布的代码中没有任何明显的内容。只是为了测试,看看它是否都适用于userList的 const 而不是后端调用。 -
是的,我从后端进行 API 调用,但我也可以在成功过滤之前通过运行 --prod 来获得 console.log 完整列表。对我来说最神秘的是为什么我在运行或构建时没有收到任何错误
-
没有案例
filter可以返回未定义。您确定您正在观察正确的日志吗?我建议使用console.log({user});代替console.log(user),这样输出会更有意义 -
否则,如果您的配置不支持自动字符串化,请使用
console.log('user', user)
标签: angular typescript production