Linux 盖茨比站点的Jest监视重新启动失败,fs/监视程序失败

Linux 盖茨比站点的Jest监视重新启动失败,fs/监视程序失败,linux,testing,jestjs,gatsby,Linux,Testing,Jestjs,Gatsby,我在盖茨比的网站上工作。我的包中有test。json设置为“test”:“jest--watch--no cache”。大多数情况下,当我保存时,手表不会出现问题。然而,偶尔,可能是由于语法错误,我的手表出错,失败并退出。我想解决这个问题,但基于这个错误,我真的不知道该往哪个方向走 我的Jest控制台输出如下: Test Suites: 0 of 8 total Tests: 0 total Snapshots: 0 total Time: 0 sinternal / fs / watchers

我在盖茨比的网站上工作。我的
包中有
test
。json
设置为
“test”:“jest--watch--no cache”
。大多数情况下,当我保存时,手表不会出现问题。然而,偶尔,可能是由于语法错误,我的手表出错,失败并退出。我想解决这个问题,但基于这个错误,我真的不知道该往哪个方向走

我的Jest控制台输出如下:

Test Suites: 0 of 8 total
Tests: 0 total
Snapshots: 0 total
Time: 0 sinternal / fs / watchers.js: 173
throw error;
    ^

  Error: ENOENT: no such file or directory, watch '/home/[USER]/backup/myGatsbySite/.cache/redux.bak'
at FSWatcher.start(internal / fs / watchers.js: 165: 26)
at Object.watch(fs.js: 1340: 11)
at NodeWatcher.watchdir(/home/[USER] / backup / myGatsbySite / node_modules / sane / src / node_watcher.js: 159: 22)
at NodeWatcher.<anonymous>(/home/[USER] / backup / myGatsbySite / node_modules / sane / src / node_watcher.js: 295: 18)
at FSReqCallback.oncomplete(fs.js: 170: 5) {
  errno: -2,
    syscall: 'watch',
      code: 'ENOENT',
        path: '/home/[USER]/backup/myGatsbySite/.cache/redux.bak',
          filename: '/home/[USER]/backup/myGatsbySite/.cache/redux.bak'
    
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gatsby-starter-default@0.2.0 test: `jest --watch --no-cache`
npm ERR! Exit status 1

My
jest.config

module.exports={
转换:{
“^.+\.jsx?$”:`/jest preprocess.js`,
},
模块映射:{
“+\”(css | styl | less | sass | scss)$”:`identity obj proxy`,
“+\”(jpg | jpeg | png | gif | eot | otf | webp | svg | ttf | woff | woff2 | mp4 | webm | wav | mp3 | m4a | aac | oga |)$”:“/"uu mocks | uu | uu |/file mock.js,
},
testPathIgnorePatterns:[`node\u modules`、`.cache`、`public`],
transformIgnorePatterns:[`node_modules/(?!(gatsby)/)`],
全球:{
__路径前缀:```,
},
testURL:`http://localhost`,
setupFiles:[`/loadershim.js`],
setupFilesAfterEnv:[“/setup test env.js”],
}
我真的不知道从哪里开始。解决问题的答案是受欢迎的,但如果能解释这两个错误的哪一部分,以便我自己解决问题,我将特别感激。

问题 运行
jest-watch
jest跟踪目录中的所有文件,以便通过
fsevents
进行更新。当它在目录中跟踪的项目被删除时,它会注意到更改,但无法重新加载不再存在的文件,从而导致“找不到文件或目录错误”

当gatsby develop启动时,它会创建“.cache”目录,正如您所期望的,在开发过程中,该目录会不断修改

我不完全确定确切的机制,但盖茨比可能正在删除“.cache”目录中的.bak文件,而Jest可能会遇到“未找到文件”错误

解决方案 将Jest配置为忽略“.cache”目录

例子 注
这是一个跟踪问题,可能已在最新版本的Jest中解决:

在运行Jest watch时,您是否正在运行gatsby dev服务器?另外,您正在运行什么版本的jest?我经常在一个终端上运行开发服务器,在另一个终端上运行测试。我正在运行
“jest”:“^26.5.3”,
我最近进行了更新,以防出现问题。这个答案很有意义,但是,我确实有:
js testPathIgnorePatterns:[`node\u modules`、`.cache`、`public`],
在我的
jest..config
中,我将编辑我的帖子以包含我的jest.config。我想,就像你说的,这是一个缓存清除时间的问题。@aisflat439当你将.cache添加到“watchPathIgnorePatterns”时会发生什么?我厌倦了它,但仍然会得到相同的错误。这似乎不太经常发生?但现在确定还为时过早。@aisflat439您得到的是什么错误?除了
.cache
之外,可能还有另一个目录需要忽略。但是,如果仍没有忽略
.cache
,则jest忽略您的jest版本中的文件夹可能存在问题,如我的答案中所述。我已将您的答案标记为正确@pygeek。虽然错误偶尔仍会发生,但频率已大大降低,至少感觉到约70%。我想,也许还有第二个问题。但因为我不知道这可能是什么,所以这个答案似乎是目前最好的答案。谢谢你的帮助!
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   '/home/[USER]/.nvm/versions/node/v12.11.1/bin/node',
1 verbose cli   '/home/[USER]/.nvm/versions/node/v12.11.1/bin/npm',
1 verbose cli   'run',
1 verbose cli   'test'
1 verbose cli ]
2 info using npm@6.11.3
3 info using node@v12.11.1
4 verbose run-script [ 'pretest', 'test', 'posttest' ]
5 info lifecycle gatsby-starter-default@0.2.0~pretest: gatsby-starter-default@0.2.0
6 info lifecycle gatsby-starter-default@0.2.0~test: gatsby-starter-default@0.2.0
7 verbose lifecycle gatsby-starter-default@0.2.0~test: unsafe-perm in lifecycle true
8 verbose lifecycle gatsby-starter-default@0.2.0~test: PATH: /home/[USER]/.nvm/versions/node/v12.11.1/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/[USER]/backup/myGatsbySite/node_modules/.bin:/home/[USER]/.shopify-app-cli/bin/user:/home/[USER]/.nvm/versions/node/v12.11.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
9 verbose lifecycle gatsby-starter-default@0.2.0~test: CWD: /home/[USER]/backup/myGatsbySite
10 silly lifecycle gatsby-starter-default@0.2.0~test: Args: [ '-c', 'jest --watch --no-cache' ]
11 silly lifecycle gatsby-starter-default@0.2.0~test: Returned: code: 1  signal: null
12 info lifecycle gatsby-starter-default@0.2.0~test: Failed to exec test script
13 verbose stack Error: gatsby-starter-default@0.2.0 test: `jest --watch --no-cache`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/home/[USER]/.nvm/versions/node/v12.11.1/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:210:5)
13 verbose stack     at ChildProcess.<anonymous> (/home/[USER]/.nvm/versions/node/v12.11.1/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:210:5)
13 verbose stack     at maybeClose (internal/child_process.js:1021:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
14 verbose pkgid gatsby-starter-default@0.2.0
15 verbose cwd /home/[USER]/backup/myGatsbySite
16 verbose Linux 5.4.0-7642-generic
17 verbose argv "/home/[USER]/.nvm/versions/node/v12.11.1/bin/node" "/home/[USER]/.nvm/versions/node/v12.11.1/bin/npm" "run" "test"
18 verbose node v12.11.1
19 verbose npm  v6.11.3
20 error code ELIFECYCLE
21 error errno 1
22 error gatsby-starter-default@0.2.0 test: `jest --watch --no-cache`
22 error Exit status 1
23 error Failed at the gatsby-starter-default@0.2.0 test script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

"jest": {
    "testPathIgnorePatterns": [".cache"]
 }