[hexo generate] files are failing to generate and link together correctly.
AdnanTech opened this issue · comments
Check List
- I have already read Docs page & Troubleshooting page.
- I have already searched existing issues and they are not help to me.
- I examined error or warning messages and it's difficult to solve.
- I am using the latest version of Hexo. (run
hexo version
to check) - My Node.js is matched the required version.
Expected behavior
hexo generate
should produce static files correctly linked with URLs pointing to the correct posts and index page. CSS and JS files generated by hexo should be found by pages correctly. This happens when the root path is set /
, when the root path is set to ./
, the css files are correctly linked but the post URLs do not work correctly.
This error has occured with both a new project using hexo as well as a project configured with hexo icarus theme. Tested on both Windows 11 and Ubuntu.
Similar posts:
Actual behavior
hexo server
shows the website correctly, with all links working. when I use hexo generate
, the post webpages are incorrectly generated.
When I use root: ./
instead of root: /
in the _configure.yml
file, the index.html
content correctly displays, however the posts content does not display correctly, and the console logs Loading failed for the <script> with source “file:///c:/Users/adnan/Desktop/test/public/2023/12/05/hello-world/js/script.js”.
, along with the other js files. This suggests a major error with how my project is routing files when hexo generate
is executed.
How to reproduce?
- hexo init
- hexo generate
To test with changed root
4. underneath url in _configure.yml
, add line root: ./
5. hexo clean
6. hexo generate
Is the problem still there under Safe mode
?
yes
Your Node.js & npm version
node: v18.18.2, npm: 10.2.4
Your Hexo and Plugin version
hexo-site@0.0.0 C:\Users\adnan\Desktop\test
├── hexo-generator-archive@2.0.0
├── hexo-generator-category@2.0.0
├── hexo-generator-index@3.0.0
├── hexo-generator-tag@2.0.0
├── hexo-renderer-ejs@2.0.0
├── hexo-renderer-marked@6.2.0
├── hexo-renderer-stylus@3.0.0
├── hexo-server@3.0.0
├── hexo-theme-landscape@1.0.0
└── hexo@7.0.0
Your package.json
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "7.0.0"
},
"dependencies": {
"hexo": "^7.0.0",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
"hexo-generator-index": "^3.0.0",
"hexo-generator-tag": "^2.0.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^6.0.0",
"hexo-renderer-stylus": "^3.0.0",
"hexo-server": "^3.0.0",
"hexo-theme-landscape": "^1.0.0"
}
}
Your site's _config.yml
(Optional)
# 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
root: ./
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
No response
There is no need to set root: ./
#2163 (comment), #4244 (comment) had told you answer.
you shou use use http://
instead of file://
to preview your website.
use http-server, serve or other tools to preview public/