角材料 (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/node
和npm 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:找不到名称“要求”的主要内容,如果未能解决你的问题,请参考以下文章