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

使用p5.js开发绘图应用时遇createColorPicker未定义错误求助

问题描述

开发大学项目绘图应用时,参照p5.js官方文档使用createColorPicker()函数,已在HTML中引入p5相关库,但运行时控制台报错:

Uncaught ReferenceError: createColorPicker is not defined
错误出现在sketch.js文件第25行。

项目代码

index.html

<html>
  <head>
    <script src="lib/p5.min.js"></script>
    <script src="lib/p5.dom.js"></script>

    <script src="sketch.js"></script>

    <!-- add extra scripts below -->
    <script src="toolbox.js"></script>
    <script src="colourPalette.js"></script>
    <script src="helperFunctions.js"></script>

    <script src="freehandTool.js"></script>
    <script src="lineToTool.js"></script>
    <script src="sprayCanTool.js"></script>
    <script src="mirrorDrawTool.js"></script>
    <script src="circleTool.js"></script>
    <script src="stampTool.js"></script>
    <script src="eraserTool.js"></script>
    <script src="editableShapes.js"></script>

    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <div class="wrapper">
      <div class="box header">My Drawing App

        <button id="clearButton">Clear</button>
        <button id="saveImageButton">Save Image</button>
      </div>
      <div class="box" id="sidebar"></div>
      <div id="content"></div>
      <div class="box colourPalette"></div>
      <div class="box colorPicker"><p>Color Picker</p></div>
      <div class="box options" id="option1"></div>
      <div class="box options2" id="optionsSize"></div>
      </div>
  </body>
</html>

sketch.js

//global variables that will store the toolbox colour palette
//amnd the helper functions
var toolbox = null;
var colourP = null;
var helpers = null;
var circleTool = null;
var circleImg;
var stampTool;
var colorPicker;
//needed to control the fill/unfill button of circleTool
var circleButtonState; 
var c;

function preload() {
    circleImg = loadImage("./assets/amongus.png");
    stampTool = new StampTool();
    stampTool.image = loadImage("./assets/amongus.png");
}

function setup() {
    //create a canvas to fill the content div from index.html
    canvasContainer = select('#content');
    c = createCanvas(canvasContainer.size().width, canvasContainer.size().height);
    c.parent("content");
    colorPicker = createColorPicker('deeppink');
    colorPicker.parent('colorPicker');
    //create helper functions and the colour palette
    helpers = new HelperFunctions();
    colourP = new ColourPalette();
    circleTool = new CircleTool();
    circleButtonState = false;
    //create a toolbox for storing the tools
    toolbox = new Toolbox();

    //add the tools to the toolbox.
    toolbox.addTool(new FreehandTool());
    toolbox.addTool(new LineToTool());
    toolbox.addTool(new SprayCanTool());
    toolbox.addTool(new mirrorDrawTool());
    toolbox.addTool(circleTool);
    toolbox.addTool(stampTool);
    toolbox.addTool(new EraserTool());
    toolbox.addTool(new EditableShapes());
    background(255);

}

function draw() {
    //call the draw function from the selected tool.
    //hasOwnProperty is a javascript function that tests
    //if an object contains a particular method or property
    //if there isn't a draw method the app will alert the user
    if (toolbox.selectedTool.hasOwnProperty("draw")) {
        toolbox.selectedTool.draw();
    } else {
        alert("it doesn't look like your tool has a draw method!");
    }   
    
}

问题排查与解决方法

  • 检查p5.dom.js的版本与引入顺序
    createColorPicker()是p5.dom库提供的API,必须保证p5.min.js先于p5.dom.js引入,且两者版本完全一致。版本不匹配会导致API无法被正确识别,前往p5.js官网下载同版本的核心库和dom库,替换项目lib文件夹中的文件。

  • 验证p5.dom.js文件路径有效性
    确认src="lib/p5.dom.js"的路径正确,文件确实存在于项目的lib目录下。打开浏览器开发者工具的"网络"标签,刷新页面后查看该文件的加载状态:如果显示404,说明路径错误,需修正路径或移动文件到对应目录。

  • 排查自定义工具类的代码问题
    检查所有自定义工具文件(如toolbox.js、colourPalette.js等),确保没有在p5生命周期函数(preload()/setup()/draw())之外调用p5的DOM相关API。如果工具类在初始化时就调用了p5 API,会因为p5.dom库还未加载完成而报错。

  • 强制清除浏览器缓存
    浏览器缓存可能导致旧版本的js文件未被更新,按Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(Mac)强制刷新页面,清除缓存后重新加载项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:32:35