Я использую строку canvg('canvas', svg);
в своем коде. Это означает, что мне нужен canvg.js.
Я включил canvg.js в свой html-заголовок. Однако это дает мне ошибку, что «require is undefined».
Для тех, кто не знает, первые две строки canvg.js:
var RGBColor = require('rgbcolor'),
StackBlur = require('stackblur-canvas');
Сначала это появилось в моей консоли как ошибка. На самом деле это не было проблемой, так как код все еще работал.
Теперь, когда я приступаю к тестированию, ошибки приводят к тому, что тесты не запускаются. Это проблема.
error loading file: /test/tests/Dependencies/canvg.js:4: Uncaught ReferenceError: require is not defined
Я перешел на https://requirejs.org/docs/release/2.3.6/comments/require.js, скопировал и вставил код в файл с именем require236.js и сохранил его в моем проекте.
Затем я перешел к моему main.html и добавил свой <script src="require236.js"></script>
прямо перед загрузкой canvg.
Я получил эти ошибки в консоли:
Uncaught Error: Mismatched anonymous define() module: function(){return f}
https://requirejs.org/docs/errors.html#mismatch
at makeError (require236.js:168)
at intakeDefines (require236.js:1254)
at require236.js:1452
require236.js:143 Uncaught Error: Module name "rgbcolor" has not been loaded yet for context: _. Use require([])
https://requirejs.org/docs/errors.html#notloaded
at makeError (require236.js:168)
at Object.localRequire [as require] (require236.js:1436)
at requirejs (require236.js:1797)
at canvg.js:4
И мои тесты не запускаются с этим файлом в качестве зависимости.
https://requirejs.org/docs/errors.html#mismatch говорит
Чтобы избежать ошибки:
Обязательно загрузите все скрипты, которые вызывают define() через RequireJS API.
Не кодируйте вручную теги сценариев в HTML для загрузки сценариев, в которых есть вызовы define().
Если вы вручную кодируете тег сценария HTML, убедитесь, что он включает только именованные модули и что анонимный модуль с тем же именем, что и один из модулей в этом файле, не загружен.
Если проблема заключается в использовании плагинов-загрузчиков или анонимных модулей, но оптимизатор RequireJS не используется для объединения файлов, используйте оптимизатор RequireJS.
Если проблема заключается в подходе var define lint, используйте стиль комментария /*global define */ (без пробела перед «global»).
Но я, честно говоря, не понимаю, как они рассчитывают его включить и где. Пожалуйста, используйте простые английские слова (или просто покажите пример кода), если вы понимаете его достаточно, чтобы объяснить.
Я бегу из PhpStorm. Я тестирую с помощью jsTestDriver. Должно быть, я как-то заявляю, что это неправильно, но я понятия не имею, как и почему require.js дает мне такие проблемы.