1.问题场景
在开发过程中,拉取同事的前端代码(vuex,nodejs),在我本地运行中,获取项目目录中1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19function searchApps (id) {
let res, rej
let promise = new Promise((resolve, reject) => (res = resolve) && (rej = reject))
let result = []
fs.readdir(appStorePath, {
withFileTypes: true
}, (err, dirents) => {
if (err) {
rej(err)
}
dirents.forEach(dirent => {
if(dirent.isDirectory() && dirent.name !== 'static'){
.........
}
})
res(result)
})
return promise
}
这个地方总是报错 dirent.isDirectory() is not function! 同事的电脑是上运行是没有任何问题的,只有我和另一个同事的电脑上会出现这个错误
2.调试问题
我们直接从 dirent入手,看看这个对象到底是什么东西,直接打印出这个对象,在我的电脑和同事的电脑(运行没有问题)比较是否有什么不一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20function searchApps (id) {
let res, rej
let promise = new Promise((resolve, reject) => (res = resolve) && (rej = reject))
let result = []
fs.readdir(appStorePath, {
withFileTypes: true
}, (err, dirents) => {
if (err) {
rej(err)
}
dirents.forEach(dirent => {
console.info(dirent);
if(dirent.isDirectory() && dirent.name !== 'static'){
.........
}
})
res(result)
})
return promise
}
同事的电脑打印:

打印显示是一个json对象
自己电脑打印:
homepage
nr.auth
打印显示是一个字符串
3.问题定位
为什么同事的电脑是json对象,而我的是字符串,用的都是nodejs自带的文件操作包,代码都一样,那不一样的就是node的版本了,同事的版本是 :

而我的版本才 v8.11.3 所以导致了这次的问题
4.解决问题
更新node版本,就可以解决问题