jspm / jQuery / TypeScript - 模块 "jquery" 没有默认导出。

28

我正在尝试使用TypeScript、jspm和system.js来进行模块加载,以启动一个Web应用程序。但是进展并不顺利。在安装了jspm并使用它安装jQuery后:

jspm install jquery

并且基础知识:

<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
        System.import('main');
</script>

main.ts:

import $ from "jquery";

export class Application  {
    constructor() {
        console.log($);
    }
}

TypeScript编译出错,错误提示为:"Module 'jquery' has no default export."

生成的config.js中的映射是正确的: "jquery": "npm:jquery@2.2.0"


3
你试过使用 import * as $ from "jquery"; 吗? - Bob Sponge
谢谢,那个可行!如果你把它提交为答案,我可以接受它。 - user888734
This worked for me! - Dan
2个回答

71
当模块没有默认导出时,你可以将整个模块作为对象进行导入:import * as $ from "jquery"; 或者导入具体的名称:import { ajax, css } from "jquery";。这些名称都是该模块内部导出的命名导出。

1
命名导出不起作用。模块jquery没有导出成员'css'。 - mradzinski
不要忘记运行:npm install jquery。 - Skyware
如果导出的模块以CommonJS/AMD/UMD格式(单个导出成员)呈现,TypeScript文档指出您应该使用import $ = require("jquery");。https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require 这两种方法有优劣之分吗? - Andrew

-1

如果你正在使用 visual studio,请更新 TypeScript 插件。

要获取 visual studio 2017 的最新版本,请前往此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接