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

Ubuntu20.04离线安装nodejs-carto运行时报hasOwnProperty未定义错误如何解决?

问题根因

Ubuntu 20.04 官方源内置的 nodejs-carto 包存在依赖缺陷,配套预装的 node-mapnik-reference 包没有正确暴露 version 属性,导致 carto 初始化时读取空值触发报错,该问题和 project.mml 配置无关,所以即使执行版本查询命令也会触发报错。

离线可行解决方案

因你无法连接公网、不能使用 npm 安装更新版本,直接修改本地 carto 源码即可修复,操作步骤如下:

  • 打开报错指向的源码文件:sudo nano /usr/lib/nodejs/carto/lib/carto/tree/reference.js
  • 找到第19行的原判断逻辑:
    if (mapnik_reference.version.hasOwnProperty(version)) {
    
    在该行前面新增一行代码,手动绑定兼容的默认 mapnik 版本,修改后完整代码段为:
    // 手动指定默认兼容的mapnik版本为3.0,适配Ubuntu20.04运行环境
    mapnik_reference.version = {"3.0.0": mapnik_reference.latest};
    if (mapnik_reference.version.hasOwnProperty(version)) {
    
  • 保存文件退出后,先执行 carto -v 验证,正常会输出版本号,再执行 carto project.mml > mapnik.xml 即可正常生成可用的渲染配置文件。
备选兼容方案

如果使用的 openstreetmap-carto 样式版本较新,和 apt 安装的旧版 carto 存在语法兼容问题,可以在内网其他可联网的同架构 Ubuntu 20.04 设备上用 npm 打包好 carto 的离线安装包,再传到目标设备全局安装即可,无需修改源码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:04