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

HTML+JS项目npm安装paper.js后import引入类报Unexpected token错误

问题原因
  • 你给引入svg.js的script标签设置了type="text/paperscript"属性,这类脚本是由Paper.js内置的解析器执行的,不支持ES6模块的import语法,解析器读到import语句的花括号位置就会抛出语法错误,也就是你看到的Unexpected token (1:7)。
  • VS Code的自动修复属于误判:编辑器静态检测到你使用了未声明的Point类,默认按原生ES模块的逻辑自动补了import语句,但完全没有识别到你当前用的是PaperScript的特殊运行环境,补的代码本身就不符合运行时的语法规则。
  • 你已经在HTML中通过普通script标签全局加载了paper-full.js,在PaperScript执行环境下,Point/Path等所有Paper.js核心API本来就会被默认注入到当前脚本的作用域,完全不需要手动import导入。
解决方法

两种方案二选一即可,不要混写:

方案1:继续使用PaperScript模式(改动最小)

  1. 直接删除svg.js第一行的import语句即可,不需要额外引入Paper.js相关类。
  2. 修正后的svg.js基础代码:
var pois = []  ; 

$(function() {
    // PaperScript环境下Point可直接调用
    new Point();
});

方案2:改用原生ES模块模式(更符合现代前端写法)

  1. 修改HTML中引入svg.js的script标签,去掉text/paperscript类型,改为ES模块类型:
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>POI</title>
  <script type="text/javascript" src="node_modules/paper/dist/paper-full.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script type="module" src="js/svg.js"></script>
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
  <canvas id="canvas" resize></canvas>
</body>
</html>
  1. 修改svg.js代码,按ES模块规则引入依赖,手动初始化Paper.js绑定画布:
import paper from '../node_modules/paper/dist/paper-full.js';
// 从paper实例上解构出需要的类
const { Point } = paper;

var pois = [];
// 手动绑定canvas元素
paper.setup(document.getElementById('canvas'));

$(function() {
    new Point();
});

注意:如果选方案2,后续所有Paper.js的API都要从paper实例上获取,不能直接调用全局的Paper类,否则会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:21:22