Node.js 如何使用express呈现geojson?

Node.js 如何使用express呈现geojson?,node.js,express,ejs,geojson,vega-lite,Node.js,Express,Ejs,Geojson,Vega Lite,我试图使用express.render将geojson添加到ejs文件中的vega lite可视化中,但我在浏览器中不断收到此错误消息: ReferenceError: /Users/karoline/Desktop/Afleveres/index.ejs:132 130| "layer": [{ 131| "data": { >> 132| "

我试图使用express.render将geojson添加到ejs文件中的vega lite可视化中,但我在浏览器中不断收到此错误消息:

ReferenceError: /Users/karoline/Desktop/Afleveres/index.ejs:132
    130|         "layer": [{
    131|             "data": {
 >> 132|                 "values": <%- geoVisData %>,
    133|                 "format": {
    134|                     "type": "topojson",
    135|                     "feature": "geometry"

geoVisData is not defined
    at eval (eval at compile (/Users/karolineschafer/node_modules/ejs/lib/ejs.js:662:12), <anonymous>:10:17)
    at index (/Users/karoline/node_modules/ejs/lib/ejs.js:692:17)
    at tryHandleCache (/Users/karoline/node_modules/ejs/lib/ejs.js:272:36)
    at View.exports.renderFile [as engine] (/Users/karoline/node_modules/ejs/lib/ejs.js:489:10)
    at View.render (/Users/karoline/node_modules/express/lib/view.js:135:8)
    at tryRender (/Users/karoline/node_modules/express/lib/application.js:640:10)
    at Function.render (/Users/karoline/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/Users/karoline/node_modules/express/lib/response.js:1012:7)
    at /Users/karoline/Desktop/Afleveres/server.js:13:14
    at Layer.handle [as handle_request] (/Users/karoline/node_modules/express/lib/router/layer.js:95:5)
我的ejs文件中的代码如下所示:

const express = require('express');
const expressApp = express();
const fs = require("fs");

expressApp.set("view engine", "ejs")
expressApp.set("views", __dirname)


expressApp.get('/', function(request, response){
    let visData = fs.readFileSync("visData.json", "utf-8");
     let geoVisData = fs.readFileSync("koebenhavns-storkreds.geojson");

    response.render('index', {
        visData: visData, 
        geoVisData: geoVisData
    });
})

app.use(Express.static(__dirname));

expressApp.listen(8080, function() {
    console.log('listening on port 8080')
});
let mapVis = {
        "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
        "width": 1300,
        "height": 1200,
        "view": {"stroke": "transparent"},
        "layer": [{
            "data": {
                "data": {"values": <%- geoVisData %>},
                "format": {
                    "type": "topojson",
                    "feature": "geometry"
                }
            },
            "projection": {
                "type": "mercator"
            },
            "mark": {
                "type": "geoshape",
                "fill": "lightgray",
                "stroke": "white"
            }
        }, {
            "data": {"values": <%- visData %>},
            "projection": {
                "type": "mercator"
            },
            "mark": "circle",
            "params": [{
                "name": "show",
                "select": {"type": "point", "fields": ["hygge"]},
                "bind": "legend"
            }],
            "encoding": {
                "longitude": {
                    "field": "longitude",
                    "type": "quantitative"
                },
                "latitude": {
                    "field": "latitude",
                    "type": "quantitative"},
                "size": {
                    "value": 30
                },
                "tooltip": [
                    {"field": "name", "type": "nominal", "title": "Name"},
                    {"field": "neighborhood", "type": "nominal", "title": "Neighborhood"},
                    {"field": "accommodationType", "type": "nominal", "title": "Type"},
                    {"field": "price", "type": "quantitative", "title": "Price per night"}
                ],
                "color": {
                    "field": "hygge", "type": "nominal", "title": "Hygge?",
                    "scale": {"range": ["#6BB7B9", "#FF5A5F"]}
                },
                "href": {"field": "link", "type": "nominal"},
                "opacity": {
                    "condition": {"param": "show", "value": 1},
                    "value": 0.2
                }
            }
        }
        ],
        "config": {
            "font": "Avenir"
        }
    }

json文件可以工作,但geojson文件不能工作。

的ejs语法可能不正确。您可以尝试以下方法或任何一种。否则,您可以简单地将geoVisData定义为一个简单变量,并在vega lite配置中使用它。非常感谢您的回复!我试过了,它们也不起作用。我还尝试将geoVisData定义为一个简单的变量,但这也会导致问题——当我这样做时,可视化不会出现,我会在控制台中收到以下错误消息:gethttp://localhost:8080/favicon.ico [HTTP/1.1 404找不到5ms]并且在promise TypeError中未捕获:此.\u数据未定义