You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GCP部署Node.js网站时配置可访问的简历PDF路径

在GCP上部署Node.js网站时配置PDF文件可访问路径的解决方案

我来帮你搞定这个PDF路径的问题——这其实是本地开发和服务器部署路径不匹配的常见坑,下面分步骤给你讲清楚怎么调整:

1. 先调整项目文件结构

首先别再写死本地绝对路径了,把你的resume.pdf放到项目内的静态资源目录里,比如新建一个public文件夹,把PDF放进去。项目结构大概是这样:

你的项目根目录/
├── public/
│   └── resume.pdf  # 把简历PDF放在这里
├── src/
│   └── 你的路由文件.ts  # 比如你写index路由的文件
└── package.json

2. 推荐用Express的静态资源托管(最省心高效)

Express自带的express.static可以自动处理静态文件的请求,比手动读文件靠谱多了。
在你的Express主入口文件(比如server.ts或者app.ts)里添加这段代码:

import express from 'express';
import path from 'path';

const app = express();
// 托管public文件夹下的所有静态资源
app.use(express.static(path.join(__dirname, '../public')));

之后你有两种方式让用户访问简历:

  • 直接让用户访问https://你的域名/resume.pdf
  • 如果想保留/curriculum-vitae的路径,就做个重定向:
    index.get('/curriculum-vitae', (req, res) => {
      res.redirect('/resume.pdf');
    });
    
    或者直接在这个路由里发送文件:
    index.get('/curriculum-vitae', (req, res) => {
      const pdfPath = path.join(__dirname, '../public/resume.pdf');
      res.sendFile(pdfPath, (err) => {
        if (err) {
          res.status(404).send('简历文件未找到');
        }
      });
    });
    

3. 如果坚持手动读文件的方式(不推荐,但也能搞定)

如果你还是想用fs.readFile的方式,必须用path模块拼接项目内的绝对路径,不能写死本地路径:

import { Router } from 'express';
import * as express from 'express';
import * as path from 'path';
import * as pug from 'pug';
import * as fs from 'fs';

const index: Router = Router();

index.get('/curriculum-vitae', (req, res, next) => {
  // 用path.join拼接正确的路径,__dirname是当前文件所在目录,../public回到项目根目录下的public文件夹
  const pdfPath = path.join(__dirname, '../public/resume.pdf');
  
  fs.readFile(pdfPath, (err, data) => {
    if (err) {
      console.error('读取PDF出错:', err);
      return res.status(500).send('无法加载简历');
    }
    // 一定要设置正确的响应头,让浏览器识别这是PDF文件
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'inline; filename="resume.pdf"');
    res.send(data);
  });
});

4. 部署到GCP的关键注意事项

  • 确保public文件夹和里面的PDF文件已经被加入Git仓库,不要加到.gitignore里——GCP部署的时候只会同步Git里的文件。
  • 如果用App Engine部署,检查你的app.yaml配置,确保没有忽略静态资源目录。比如可以加这段配置(如果没用到express.static的话):
    handlers:
    - url: /.*
      static_dir: public
    

内容的提问来源于stack exchange,提问作者xiaolingxiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:55:06