我如何计算所有全球进口以及从哪里进口?

时间:2017-01-28 01:46:27

标签: node.js typescript visual-studio-code tsconfig

当我在app.ts的开头添加以下行

@app.context_processor
def override_url_for():
    return dict(url_for=dated_url_for)

def dated_url_for(endpoint, **values):
    if endpoint == 'static':
        filename = values.get('filename', None)
        if filename:
            file_path = os.path.join(app.root_path,
                                     endpoint, filename)
            values['q'] = int(os.stat(file_path).st_mtime)
    return url_for(endpoint, **values)

我收到以下错误,

  

无法重新声明块范围变量'crypto'

好像它已从其他地方全球导入, 这就是我的tsconfig.json的样子

const crypto = require('crypto');

PS: 上面的错误是当我尝试从终端传输它时。 我在VisualStdioCode中使用VisualStdioCode,它没有显示任何错误,

  

/ path / to / VisualStdioCode / Visual Studio   Code.app/Contents/Resources/app/extensions/typescript/node_modules/typescript/lib/lib.dom.d.ts

EDIT(解决): 这里的问题与cannot redeclare block scoped variable (typescript)略有不同 这个问题的目的是检测重复的导入源,而不是使用ES6非显式赋值来为我们自动解决它。 这里的解决方案是从libs或node_modules导入,而不是在答案中提到的范围。

1 个答案:

答案 0 :(得分:1)

crypto已经是浏览器中的全局只读属性,因此TypeScript会阻止您尝试覆盖它。

https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto

但是,既然您正在使用commonJS,那么您可能正在构建Node,也许您并不意味着要包含" dom" " lib"?

中的打字