gpt4 book ai didi

node.js - 无法使用 ExpressJS 和 Zeit Now ('now dev' 访问静态公用文件夹)

转载 作者:行者123 更新时间:2023-12-03 12:14:55 25 4
gpt4 key购买 nike

我创建了一个带有 Handlebars 模板引擎的 ExpressJS 应用程序,并通过 npm start 启动该应用程序对我来说看起来一切都很好,因为正在加载所有 Assets 。

这是我的文件夹结构 :

- public
- css
- svg
- uploads
- views
- layouts
> home.handlebars

这是我的 的相关内容index.js :
const express = require('express');
const exphbs = require('express-handlebars');
const path = require('path');
const fs = require('fs');
const port = 5000;
const index = express();


app.set('views', path.join(__dirname, '/', 'views'));
app.use(express.static(__dirname + '/public'));
app.engine('handlebars', exphbs({
defaultLayout: 'main',
layoutsDir: path.join(__dirname, '/', 'views', 'layouts')}
));
app.set('view engine', 'handlebars');

这是我的 的内容现在.json :
{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@now/node-server"
}
],
"routes": [
{
"src": "/",
"dest": "/",
"methods": ["GET"]
},
{
"src": "/justaroute",
"dest": "/",
"methods": ["POST"]
}
]
}

问题

正如我上面所说,使用 npm start显示我的工作应用程序,但使用 now dev我的应用找不到任何 Assets (在控制台中显示 404): http://localhost:3000/css/icons.css net::ERR_ABORTED 404 (Not Found) http://localhost:3000/uploads/[...].jpg 404 (Not Found) .

看起来
app.set('views', path.join(__dirname, '/', 'views'));

正在将 View 路径设置为 View 正在加载的 Assets 的根目录。

里面 浏览量 我加载这样的 Assets :
<link rel="stylesheet" type="text/css" href="css/icons.css">

我已经尝试添加 /public/[...]通过添加 app.set('public', path.join(__dirname, '/', 'public')); 到 Assets href 并明确获取公用文件夹这导致 Chrome 仍然找不到 Assets : http://localhost:3000/public/css/icons.css net::ERR_ABORTED 404 (Not Found)

最佳答案

我设法使用下面的代码为自己工作。您必须在 now.json 中的 build 和 route 中提供 assets 文件夹。我在 Node 中提供文件并且没有任何问题 404,所以我最终确认这是某种 Zeit 配置问题。

如果使用“now dev”命令运行它,则可以确定它在部署到生产环境时会起作用。

NB。我的 Assets 文件夹是嵌套的,因为当我的新站点启动并运行时,该站点将被归档,因此它被放置在“归档”子目录中。将其更改为适合您需要的任何内容。

./index.js

var express = require('express');
var server = express();
server.use('/', express.static('/src/archive'));
server.listen(8080);

./now.json
{
"version": 2,
"builds": [
{
"src": "src/archive/**",
"use": "@now/static"
},
{
"src": "*.js",
"use": "@now/node-server"
}
],
"routes": [
{
"src": "/",
"dest": "src/archive/index.html"
},
{
"src": "/(.+)",
"dest": "src/archive/$1"
}
]
}

关于node.js - 无法使用 ExpressJS 和 Zeit Now ('now dev' 访问静态公用文件夹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com