hexojs / hexojs/hexo

Restarting watch triggers a warning about trying to create an already existing file for posts that were created during the previous watch

Open
#5,747 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
41.8k
Forks
41
PR merge metrics
No merged PRs in 30d

Description

### Check List

- [x] I have already read [Docs page](https://hexo.io/docs/) & [Troubleshooting page](https://hexo.io/docs/troubleshooting).
- [x] I have already searched existing issues and they are not help to me.
- [x] I examined error or warning messages and it's difficult to solve.
- [x] I am using the [latest](https://github.com/hexojs/hexo/releases) version of Hexo. (run `hexo version` to check)
- [x] My Node.js is matched [the required version](https://hexo.io/docs/#Required-Node-js-version).

### Expected behavior

There shouldn't be a warning about trying to create a file that already exists since no new attempt to create a file has been made.

### Actual behavior

When I run `hexo generate --watch` in one terminal, then run `hexo new hello` in another terminal, and then restart the `hexo generate --watch` command (by pressing Ctrl-C to stop and then running the command again), the following warning prints.

```
WARN Trying to "create" _posts/hello.md, but the file already exists!
```

### How to reproduce?

1. Run `hexo generate --watch`
2. Run `hexo new hello` in another terminal, while keeping the generate process from step 1 alive
3. Stop the process from step 1 by pressing Ctrl-C
4. Rerun `hexo generate --watch`

### Is the problem still there under `Safe mode`?

No, but I can reproduce it in the hexojs/hexo-theme-unit-test repo.

### Your Node.js & npm version

```text
v22.22.0
11.10.1
```

### Your Hexo and Plugin version

```text
hexo-site@0.0.0 D:\hexo-theme-unit-test
+-- hexo-generator-archive@2.0.0
+-- hexo-generator-category@2.0.0
+-- hexo-generator-index@4.0.0
+-- hexo-generator-tag@2.0.0
+-- hexo-renderer-ejs@2.0.0
+-- hexo-renderer-marked@7.0.1
+-- hexo-renderer-stylus@3.0.1
+-- hexo-server@3.0.0
+-- hexo-tag-embed@1.0.0
`-- hexo@8.1.1
```

### Your `package.json`

```json
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "8.1.1"
},
"dependencies": {
"hexo": "^8.0.0",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
"hexo-generator-index": "^4.0.0",
"hexo-generator-tag": "^2.0.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^7.0.0",
"hexo-renderer-stylus": "^3.0.0",
"hexo-server": "^3.0.0",
"hexo-tag-embed": "latest"
}
}
```

### Your site's `_config.yml` (Optional)

```yaml
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/

# Site
title: Hexo
subtitle: ''
description: ''
keywords:
author: John Doe
language: en
timezone: ''

# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: http://example.com
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks

# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:

# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link:
enable: true # Open external links in new tab
field: site # Apply to the whole site
exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
syntax_highlighter: highlight.js
highlight:
line_number: true
auto_detect: false
tab_replace: ''
wrap: true
hljs: false
prismjs:
preprocess: true
line_number: true
tab_replace: ''

# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 10
order_by: -date

# Category & Tag
default_category: uncategorized
category_map:
tag_map:

# Metadata elements
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
meta_generator: true

# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
## updated_option supports 'mtime', 'date', 'empty'
updated_option: 'mtime'

# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page

# Include / Exclude file(s)
## include:/exclude: options only apply to the 'source/' folder
include:
exclude:
ignore:

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: landscape

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: ''
```

### Others

I actually found this issue while developing an editor plugin. The problem seems to be related to the watch functionality since running `hexo.source.unwatch()` solved the issue on my code (though that is not something I want to do).

I don't know much, but I guess it could be related to hexojs/hexo#4791 since the warning message seems to come from there.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.