Во-первых, у меня есть p5.js сценарий:Экспорт функции из p5.js с Browserify
//canvas.js
var p5 = require('p5')
module.exports = new p5(function() {
this.setup = function setup() {
this.createCanvas(700, 400)
this.background(205)
this.loadImage('/uploads/uploaded_image', function (img) {
image(img, 0, 0)
})
this.updatePixels()
}
this.clearCanvas = function redraw() {
this.background('black')
}
Все это в новом объекте p5 так, что он будет связывать с browserify потому p5, как я понимаю, прогонов в глобальном пространстве имен. Это работало отлично, но мне нужна кнопка, которая превратила бы весь холст в черный цвет, поэтому я добавил новую функцию clearCanvas, которая перерисовывает холст в черном. Я добавил часть module.exports, чтобы я мог потребовать в объекте p5 и использовать эту новую функцию в другом скрипте. Затем я добавил кнопку в моем нефритом файле:
button(type='button', id='clear').
Click to clear
И затем я создал обработчик, который требовал бы в p5 экспортируемого объекта и использовать clearCanvas функционировать OnClick:
var canvas = require('./canvas.js')
document.getElementById('clear').onclick = function() {
canvas.clearCanvas()
}
В результате это две ошибки в консоли:
bundle.js: 34633 Uncaught TypeError: не удается установить свойство 'OnClick' нулевых
bundle.js: 14197 p5 были проблемы с созданием глобальной functi на «clear», возможно, потому, что ваш код уже использует это имя как переменную. Вы можете переименовать переменную в другое.