Jest:TypeError:无法读取未定义的属性“length”
2017-08-13
14694
为什么是 object.anonymous
package.json:
package.json:
{
"name": "SmartConverter",
"version": "1.0.0",
"main": "./src/js/main.js",
"scripts": {
"test": "jest --coverage",
"build": "webpack --config ./scripts/*/webpack.config.js"
},
"repository": "https://github.com/raushankumarnitdgp/SmartConverter.git",
"author": "raushankumarnitdgp <[email protected]>",
"license": "MIT",
"dependencies": {
"babel-cli": "^6.24.1",
"babel-core": "^6.25.0",
"babel-jest": "^20.0.3",
"babel-loader": "^7.1.1",
"babel-preset-es2015": "^6.24.1",
"eslint": "^4.4.1",
"jest": "^20.0.4",
"jest-cli": "^20.0.4",
"regenerator-runtime": "^0.10.5",
"webpack": "^3.5.2"
}
}
2个回答
您在错误跟踪跟踪中看到的
anonymous
关键字只是告诉您错误发生在匿名函数中。匿名函数是没有名称的函数,通常用作回调,但并非总是如此。例如:
function main() {
myLibrary.doSomething('foo', function() {
console.log('I have finished')
})
}
传递给
myLibrary.doSomething
的函数是一个匿名函数。您看到的错误似乎发生在
phone.js
文件的第 20 行。检查您在哪里使用了
.length
。
Ignacio
2017-08-14
我认为可能是某些 props 尚未设置,例如,如果你在 ComponentX 中有一个名为expenses 的属性,但是在 jest 文件中,你没有预先设置此expenses 属性,
例如:
<ComponentX />
,忘记将 props 传递给这个 ComponentX,而 Jest 找不到expenses 属性的位置,expenses 将未定义,然后 undefined.length 肯定会导致未定义的错误。
我们如何解决这个expenses.length未定义的问题?
我们可以这样做:
<ComponentX supplies={mockExpenses} />
现在,expenses.length 不应该是未定义的,因为expenses 有一些数据。
Damon Wu
2019-01-19