tom*_*gun 5 node.js express vercel
我创建了一个带有车把模板引擎的 ExpressJS 应用程序,并且通过以下方式启动应用程序npm start对我来说看起来一切都很好,因为所有资源都已加载。
这是我的文件夹结构:
- public
- css
- svg
- uploads
- views
- layouts
> home.handlebars
Run Code Online (Sandbox Code Playgroud)
这是我的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');
Run Code Online (Sandbox Code Playgroud)
这是我的now.json的内容:
{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@now/node-server"
}
],
"routes": [
{
"src": "/",
"dest": "/",
"methods": ["GET"]
},
{
"src": "/justaroute",
"dest": "/",
"methods": ["POST"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
问题
正如我上面所说,使用npm start显示了我的工作应用程序,但使用now dev我的应用程序找不到任何资产(在控制台中显示 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'));
Run Code Online (Sandbox Code Playgroud)
正在将视图路径设置为视图正在加载的资源的根目录。
在视图中,我加载如下资源:
<link rel="stylesheet" type="text/css" href="css/icons.css">
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加/public/[...]到资产 href 并通过添加显式获取公共文件夹app.set('public', path.join(__dirname, '/', 'public'));,这导致 Chrome 仍然找不到资产:http://localhost:3000/public/css/icons.css net::ERR_ABORTED 404 (Not Found)
我设法用下面的代码让这个为我自己工作。您必须在 now.json 的构建和路由中提供资产文件夹。我在节点中提供文件,没有任何问题 404,所以我最终确认这是某种 Zeit 配置问题。
如果使用“now dev”命令运行此命令,那么在部署到生产环境时可以确定它会正常工作。
铌。我的资产文件夹是嵌套的,因为当我的新网站启动并运行时,该网站将被存档,因此它被放置在“存档”子目录中。将此更改为适合您需要的任何内容。
./index.js
var express = require('express');
var server = express();
server.use('/', express.static('/src/archive'));
server.listen(8080);
Run Code Online (Sandbox Code Playgroud)
./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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |