角材料 (8) S2591:找不到名称“要求”

Posted

技术标签:

【中文标题】角材料 (8) S2591:找不到名称“要求”【英文标题】:Angular Material (8) S2591: Cannot find name 'require' 【发布时间】:2020-05-30 22:18:31 【问题描述】:

我正在尝试将日期/时间记录到 javascript 控制台中。我得到的错误信息如下,是由下面的代码生成的。

ETA:代码确实有效。日期将进入控制台。只是错误消息仍然存在

消息:

src/app/kdc/services/customers.api.service.ts(60,9) 中的错误:错误 TS2591:找不到名称“要求”。是否需要安装类型 节点的定义?尝试npm i @types/node,然后将node 添加到 tsconfig 中的 types 字段。

注意:我已经对tsconfig.json 文件进行了更改,并且还完成了npm i @types/nodenpm i @types/node --save 运行npm 时的结果是3 high-security vulnerabilities(见下文)

此时我能做什么?`

customer.api.service.ts

   getCustomers(): Observable<Customers[]> 
        return this.httpclient.get<Customers[]>(this._url)
        .pipe( catchError(this.handleError));
        
     

    handleError(error:HttpErrorResponse)
        let rval = Math.random().toString(36).substring(7).toUpperCase();
        require('log-timestamp');
        console.error('MSG NO :' + rval );
        console.error(error);
        return throwError(rval + " <-> " + error.name + " <-> " + error.statusText );
      

预计到达时间 我在这里找到了消息Cannot find name 'require' after upgrading to Angular4 并更改了我的 tsconfig.app.json 文件 - 这可能有点矫枉过正,但它确实有效......

  "compilerOptions": 
    "outDir": "./out-tsc/app",
    "types": [ "node" ],
    "typeRoots": [ "../node_modules/@types" ]
  ,

【问题讨论】:

为什么要使用 log-timestamp 删除这一行 require('log-timestamp'); 我一直在寻找一种简单的方法来记录时间戳 - 它可以正常工作。只是消息不断弹出。 如果您有更好的方法将时间戳记入日志,我愿意倾听 【参考方案1】:

确保将类型放入 tsconfig.app.json 而不是 tsconfig.json

  "compilerOptions": 
    "module": "esNext",
    "types": ["node"]
  ,

还要确保组件中的 systax 看起来像这样

const someLib = require("someLib"); // make sure the name is match with your package name

然后停止 angular cli 然后再次运行

【讨论】:

是的,我发现了一条旧消息 - 这正是问题所在。谢谢! 很高兴为您提供帮助。干杯【参考方案2】:

现在您可以使用 ECMAScript 导入。来自

const someLib = require("someLib");

import * as someLib from 'someLib';

【讨论】:

以上是关于角材料 (8) S2591:找不到名称“要求”的主要内容,如果未能解决你的问题,请参考以下文章

角材料更改垫复选框内的刻度颜色

vscode下运行c++找不到头文件是怎么回事

6108v9b 找不到刷机包

如何从对象类型中动态获取值并在扩展面板角材料中实现?

vscode提示找不到module

找不到QT的头文件怎么办?