Автономный пример BokehJS
Как начинающий пользователь машинописного текста (но опытный пользователь Bokeh), я пытаюсь взять один из примеров BokehJS и запустить его автономно - это находится за пределами файловой иерархии репозитория Bokeh git.
Так, например, если я хочу запустить burtin
Например, я копирую .ts
, .html
а также tsconfig.json
(с верхнего уровня examples
каталог) в новую папку. Я могу затем изменить link
а также script
теги в .html
файл для указания на локальные копии соответствующих ресурсов. Когда я пытаюсь бежать tsc burtin.ts
Я получаю следующие ошибки:
$ tsc burtin.ts
burtin.ts(2,16): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(2,16): error TS2503: Cannot find namespace 'Bokeh'.
burtin.ts(3,27): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(5,18): error TS2503: Cannot find namespace 'Bokeh'.
burtin.ts(6,16): error TS2503: Cannot find namespace 'Bokeh'.
burtin.ts(8,24): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(9,3): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(10,3): error TS2304: Cannot find name 'Bokeh'.
Как мне сказать компилятору машинописного текста, где найти Bokeh
? tsconfig.json
в burtin
Пример имеет следующее:
{
"extends": "../tsconfig.json",
"files": [
"../../src/coffee/api/typings.d.ts",
"burtin.ts"
]
}
и, возможно, typings.d.ts
говорит компилятору, где искать экспортированные имена BokehJS, но неясно, нужно ли мне иметь полную исходную базу bokeh для компиляции примера (typings.d.ts
файл не включен, когда вы conda install bokeh
).
Любое понимание того, как вы настроите этот пример и запустите его отдельно, будет оценено.
ОБНОВЛЕНИЕ: хотя tsc
выдает ошибки, все равно выдает рабочую burtin.js
и HTML-страница отображается правильно. Мне просто непонятно, есть ли более оптимальный способ настройки среды разработки.
1 ответ
Бег tsc burtin.ts
пренебрегает tsconfig.json
, Ты должен бежать tsc -p tsconfig.json
(или же tsc -p .
) вместо Таким образом, вы получите сообщение об ошибке, когда наборы (файлы d.ts) не найдены. Наборы должны быть частью пакетов conda и npm, но, похоже, у нас здесь регрессия, поэтому сейчас вам придется прибегнуть к клонированию репозитория bokeh или копированию файлов *.d.ts. Они необходимы только для компиляции и не используются во время выполнения. Имея типизацию или нет, TypeScript все равно скомпилирует файл *.ts и выдаст действительный файл *.js, если нет синтаксиса или других фундаментальных ошибок и noEmitOnError
установлен в false
, Это связано с тем, что система типов TypeScript полностью стирается перед созданием файла *.js, а код на основе типов программы не генерируется.
Учитывая, что поддержка TypeScript в bokehjs находится в стадии активной разработки, а bokehjs переписывается с нуля в TypeScript, в этой области должны быть сделаны значительные улучшения через несколько недель. В частности, будут предоставлены новые автоматически сгенерированные наборы текста, охватывающие всю библиотеку. В идеале должен быть один файл bokeh.d.ts для включения.