У меня есть приложение, созданное с помощью углового универсального "@nguniversal/express-engine": "^9.1.1"
. Я пытаюсь добавить холст узла на стороне сервера ("canvas": "^2.6.1"
) для рендеринга определенных изображений на сервере. Мне не нужно, чтобы эта библиотека была доступна на стороне клиента, и поэтому я хочу исключить ее из пакета.
Однако при попытке запустить приложение с npm run dev:ssr
я получаю ошибки, связанные с этой библиотекой:
ERROR in ./node_modules/canvas/build/Release/canvas.node 1:0
Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are
configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)
this.debug is not a function
После некоторых исследований я обнаружил, что опция externalDependencies
была добавлена к angular.json
опциям сборки сервера. Я попытался добавить путь к библиотеке canvas
в массив externalDependencies
, но это не дало никакого результата. Ошибка все еще есть. И сборка терпит неудачу.
В настоящее время я использую динамическую import()
для загрузки библиотеки холста в один из сервисов angular, если платформа server
. По какой-то причине я предположил, что по умолчанию он не будет пытаться связывать динамически импортированные скрипты. Может быть, есть какие-то другие обходные пути.
Итак, резюмируя, в идеале я хотел бы иметь некий сервис, доступный только на стороне сервера, и внутри него использовалась бы библиотека canvas
. И не сломает угловатую сборку.