关键依赖项:require函数的使用方式不能静态提取依赖项

时间:2018-07-13 06:50:27

标签: angular typescript angular6

有人在“ ng服务”中面临以下警告吗?

  

./ node_modules/@angular/compiler/src/util.js中的警告   10:24-31关键依赖项:require函数的使用方式不能静态提取依赖项   「wdm」:带有警告。

角度版本控制:

  

Angular CLI:6.0.8   节点:8.11.3   操作系统:Darwin x64   角度:6.0.9   ...动画,通用,编译器,compiler-cli,核心,形式   ... http,语言服务,平台浏览器   ...平台浏览器动态,路由器,升级

我尝试更新CLI和Angular,但没有成功。 util.js中的代码如下:

function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        var v = factory(require, exports);
        if (v !== undefined) module.exports = v;
    }
    else if (typeof define === "function" && define.amd) {
        define("@angular/compiler/src/util", ["require", "exports"], factory);
    }
}

7 个答案:

答案 0 :(得分:41)

我收到此错误并找到了: https://fluin.io/blog/critical-dependency-cannot-be-statically-extracted,作者显示他正在收到相同的警告。但是,我没有使用Angular Elements,但我知道它可能与相同的问题有关,因此我继续检查我是否在所有导入中都使用了@angular/compiler/src/core

我确实在这样做。 修复就像删除导入行一样简单,在我的情况下为:

import { ViewEncapsulation } from '@angular/compiler/src/core';

然后编辑器将其自动导入,如下所示:

import { Component, OnInit, ViewEncapsulation } from '@angular/core';

希望对您有帮助。

答案 1 :(得分:18)

当我从EventEmitter而非protractor错误导入@angular/core时遇到了同样的错误。

import { EventEmitter } from 'protractor';更改为import { EventEmitter } from '@angular/core';即可解决。

答案 2 :(得分:0)

我有此错误(如标题所示)和其他几个错误,因为我尝试实现第3方库。

因此,简而言之,如果遇到这些错误,请尝试查看您的第三方库。就我而言,这是Scanbot.io的条形码扫描库。

答案 3 :(得分:0)

在您的应用中搜索导入。

您极有可能误输入了类似于from '@angular/compiler/foo'的内容。

答案 4 :(得分:0)

如果从src路径导入,则会引发此警告

从以下位置更改组件导入语句

import { ChangeDetectionStrategy, ViewEncapsulation } from '@angular/compiler/src/core';

import {  ViewEncapsulation, ChangeDetectionStrategy} from '@angular/core';


答案 5 :(得分:0)

这是我从导入中发生的:

import { Message } from '@angular/compiler/src/i18n/i18n_ast';

我有一个Message界面,但自动填充导入功能默认为上述功能之一。

答案 6 :(得分:0)

我发现了一个类似的问题:

<块引用>

./node_modules/@angular/compiler/src/util.js:10:24-31 - 警告: 关键依赖:require 函数的使用方式 依赖项不能静态提取

我记得使用 stringify 而不是 JSON.stringify 并且自动导入(使用 vs 代码)为:

import { stringify } from '@angular/compiler/src/util';

我删除了这个自动导入并将代码更正为 JSON.stringify。