4

我正在尝试使用import我的 html 模板,以便 webpack 能够识别它们并在我构建时包含它们。( webpack -d)

根据这个 GitHub 问题,我应该这样做

declare module '*.html' {
    const _: string;
    export default _;
}

然后import template from './myTemplate.html';应该工作。

但它并不完全奏效。

import template from './myTemplate.html';
console.log(template); // undefined

然而,这“有效”

import * as template from './myTemplate.html';
console.log(template); // <p>Hello world!</p>

很奇怪。

但是现在这不起作用

$routeProvider.when("/test", {
    template: template, // ERROR! template is typeof(*.html) expected string
    controller: MyController,
    controllerAs: "$ctrl"
});

但是,如果我将 *.html 模块更改为

declare module '*.html' {
    const _: string;
    export = _; // changed this
}

我现在可以

import * as template from './myTemplate.html';

$routeProvider.when("/test", {
    template: template, // Great success!
    controller: MyController,
    controllerAs: "$ctrl"
});

它工作,但为什么不import template from './myTemplate.html';工作?我做错了什么,因为 GitHub 问题中的其他人似乎让它像那样工作。

4

1 回答 1

6

你没有做错任何事,为了使用import template from './myTemplate.html';你需要使用export default语法。

html由于 webpack 是处理导入的一个事实,因此默认情况下它不会导出默认值。

但是您可以将您的配置html-loader为使用导出默认值。

于 2017-12-08T11:01:35.673 回答