定位ECMAScript 2015模块时,无法使用导入分配

时间:2016-09-23 15:08:41

标签: angular typescript clipboard

我正在尝试使用以下内容:

import Clipboard = require('clipboard');

我收到以下错误:

   [default] c:\xampp\htdocs\isitperfect\node_modules\angular2-clipboard\src\clipboard.directive.ts:2:0 
Import assignment cannot be used when targeting ECMAScript 2015 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.

错误在这一行:

import Clipboard = require('clipboard');

我试过了:

import * as Clipboard from 'clipboard';

以及其他一些变化,但无法弄清楚如何解决它。

我正在使用typescript 2.0.0

有什么想法吗?

7 个答案:

答案 0 :(得分:30)

我遇到了和你一样的问题。

tsconfig.json 文件中,我更换了:

"module": "es6"

"module": "commonjs"

并重新启动终端。它奏效了。

答案 1 :(得分:9)

我遇到了同样的问题并改为:

import * as myGlobals from "../globals";

修复了问题。 globals.ts文件位于主app文件夹中,我正在从子文件夹services加载它。

答案 2 :(得分:5)

如果您使用的是Angular CLI:我在文件module中将es2016的值设置为src/tsconfig.app.json后,就可以编译我的项目。

答案 3 :(得分:0)

尝试在tsconfig中将模块设置为commonjs

您可以使用webpack here

尝试此示例

答案 4 :(得分:0)

在更新我的vsCode之后,我遇到了同样的问题。

只需替换为"module": "es5"

tsconfig.app.json

中的"module": "commonjs"

答案 5 :(得分:0)

我使用了导入功能的default成员。

import {default as Clipboard} from 'clipboard';

答案 6 :(得分:0)

类似于 KristianC,我在升级到 Angular 11 时收到了 lodash 的警告

const cloneDeep = require('lodash-es/cloneDeep');

“当面向 ECMAScript 模块时不能使用导入分配。”

将“require”更新为“import”时的警告已解决

import { cloneDeep } from 'lodash-es';