我有一个具有以下结构的flask项目:
├─ app.py
├─ project
| ├─ __init__.py
| └─ static
| └─ typescript
| └─ app.ts
└─ typings
├─ globals
| └─ ... # multiple imported ts libraries
└─ index.d.ts我使用的是一个名为Flask Assets的webpacker集成。我像这样设置了编译(在__init__.py中)
ts = get_filter('typescript')
ts.load_paths = [
#os.path.join(config.APP_ROOT, '..', 'typings'), # doesn't do anything :/
os.path.join(app.static_folder, 'typescript')
]
assets.register('javascript', Bundle(
'typescript/app.ts',
filters = (ts, 'jsmin'),
output = 'js/app-%(version)s.js'
))我的app.ts或多或少
class SomeClass {
... various class methods, using things like jQuery and CryptoJS
}没有导入-我真的不确定我是否需要它们。
我得到的具体错误是
Cannot find name 'JQuery'.
../../../../../var/folders/5t/4x0gmsdx0dbbgv_fr3cv3x6m0000gn/T/tmphFTSQo.ts(7,17): error TS2503: Cannot find namespace 'CryptoJS'.
../../../../../var/folders/5t/4x0gmsdx0dbbgv_fr3cv3x6m0000gn/T/tmphFTSQo.ts(10,27): error TS2304: Cannot find name '$'.
... a bunch more about other symbols发布于 2016-09-21 06:04:38
我差不多解决了.
glob_string = os.path.join(config.APP_ROOT, '..', 'typings', '*', '*', '*.d.ts')
assets.register('javascript', Bundle(
glob.glob(glob_string),
'typescript/app.ts',
filters = ('typescript', 'jsmin'),
output = 'js/app-%(version)s.js'
))基本上,我只是“手动”将所有定义文件添加到包中(使用glob)。仅仅在键入目录的根目录中添加index.d.ts是不够的,因为typescript过滤器会在编译前将.ts复制到临时文件(在/tmp中),并且index.d.ts中的路径是相对的。
还应该注意的是,ts.load_paths什么也不做……
https://stackoverflow.com/questions/39600748
复制相似问题