Мне пришлось сделать две вещи, чтобы код работал
в коде, добавить путь
ace.config.set('basePath', '/assets/ui/');
ace.config.set('modePath', '/assets/ui/');
ace.config.set('themePath', '/assets/ui/');
ace.config.set('workerPath','/assets/ui/');
Добавить следующий код в angular.json
"assets": [
"src/assets",
"src/favicon.ico",
{
"glob": "**/*",
"input": "./node_modules/ace-builds/src/",
"output": "/"
}
],
"scripts": [
"./node_modules/ace-builds/src/ace.js",
"./node_modules/ace-builds/src/theme-eclipse.js",
"./node_modules/ace-builds/src/theme-monokai.js",
"./node_modules/ace-builds/src/mode-html.js"
]
Все ace
файлы находятся в /node_modules/ace-builds/src/
. строка glob
делает их доступными в outDir
, где Angular
создаст окончательную сборку. В моем случае это ../public/ui
, откуда я строю код angular. Таким образом, все файлы ace
будут на самом деле go до ../public/ui/
. Причина, по которой я использую assets
, заключается в том, что я использую сервер Play
, который обращается к ресурсам, используя assets
в пути. Таким образом, чтобы получить файлы, он будет вызывать, например, localhost:9000/assets/ui/worker-html.js
. В приложении play
я использую маршрут для сопоставления всех /assets/...
запросов с /public/...
path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)