使用Express提供SVG文件服务

6
我想知道如何使用Express提供一个svg文件。
这是我迄今为止尝试过的:
svg文件
<svg width="400" height="180">
  <g>
    <rect x="50" y="20" rx="20" ry="20" width="150" height="150"
      style="fill:red;stroke: black;stroke-width:5;opacity:0.5"></rect>
  </g>
</svg>

路线文件
var express = require('express');
var router = express.Router();

router.get('/myRoute', function (req, res, next) {
  res.setHeader('Content-Type', 'image/svg+xml');
  res.sendFile('../views/status.svg');
});

module.exports = router;

但是,当我将浏览器指向该路由时,我会收到以下错误提示:
This page contains the following errors:

error on line 1 at column 103: Opening and ending tag mismatch: link line 0 and head
Below is a rendering of the page up to the first error.

我不知道为什么这个不起作用,也不确定“第1行第103列”指的是哪里。在我的代码库中没有这样的行和列。你有什么建议吗?

查看源代码(在浏览器中)并查看1:103是什么。 - 7zark7
1个回答

2

尝试将SVG发送到视图中,但没有问题。

res.sendFile('../views/status.svg');

使用绝对链接来发送文件

res.sendFile(__dirname + '/views/status.svg');

1
是的。我需要一个绝对路径作为参数。我这样做了:res.sendFile(path.join(__dirname, '../views/status.svg')); - mc9
现在我意识到我需要首先渲染它。我已经发布了一个单独的问题。你有什么建议吗?https://dev59.com/etLus4cB2Jgan1znwHBk - mc9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接