【问题标题】:I can't use or import Navigo in Typescript我无法在 Typescript 中使用或导入 Navigo
【发布时间】:2019-06-16 07:26:09
【问题描述】:

我已经使用 npm 在我的 Typescript 项目中安装了 navigo@types/navigo

我想用

new Navigo(null, true, "#!");

如果不导入 navigo 我得到错误

 TS2686: 'Navigo' refers to a UMD global, but the current file is a module. Consider adding an import instead.

使用import Navigo from 'navigo'; 时出现错误

TS1192: Module '"path/node_modules/@types/navigo/index"' has no default export.

当使用import { Navigo } from 'navigo'; 我得到

TS2497: Module '"path/node_modules/@types/navigo/index"' resolves to a non-module entity and cannot be imported using this construct.

当使用import module = require("module"); 我得到

TS1202: Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.

这里有什么问题?

使用这个 typedef https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/navigo/index.d.ts

【问题讨论】:

    标签: typescript


    【解决方案1】:

    在我看来,这是您安装的类型的问题。深入了解 Navigo 的源代码,它肯定使用默认导出。使用export = 语法导出类型文件,您可以使用read more about here。看来这两者不直接兼容:

    export =import = require()

    CommonJS 和 AMD 通常都有 exports 对象的概念,它包含一个模块的所有导出。

    它们还支持将exports 对象替换为自定义的单个对象。默认导出旨在替代此行为;然而,两者是不相容的。 TypeScript 支持export = 对传统的 CommonJS 和 AMD 工作流程进行建模。

    export = 语法指定从模块导出的单个对象。这可以是类、接口、命名空间、函数或枚举。

    使用export = 导出模块时,必须使用特定于TypeScript 的import module = require("module") 来导入模块。

    【讨论】:

    • 谢谢。所以我把它作为一个问题提交到 github 上?
    • @Asken 您的 Navigo Typescript 定义问题发生了什么?我搜索了它,但在他们的 Github 问题跟踪器中没有看到它。
    • @Chris 坦率地说,我自己写的。我已经停止寻找捷径,只使用最常见的包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2019-01-17
    • 2020-06-06
    • 2014-09-06
    • 2016-06-11
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多