我正在尝试使用fs.readFileSync
读取一个文件,但似乎找不到它。
我确保声明了它,并将其添加到了构造函数中:
export default class Login extends React.Component<LoginProps, {}> {
private webAuth: auth0.WebAuth;
fs: any;
constructor(props: any, context: any) {
super(props, context);
this.fs = require('fs');
this.webAuth = new auth0.WebAuth({
clientID: conf.auth0.clientId,
domain: conf.auth0.domain,
responseType: 'token id_token',
redirectUri: `${window.location.origin}/login`
});
}
[...]
并将其用于一个简单的函数中:
verifyToken = (token) => {
console.log(this.fs);
let contents = this.fs.readFileSync('../utils/public.key', 'utf8');
console.log(contents);
}
但这会引发一个Uncaught TypeError: _this.fs.readFileSync is not a function
。有没有一种特殊的方法可以将fs
包含在Typescript中?
4条答案
按热度按时间piztneat1#
我无法想象在React组件中使用
fs
的任何情况。即使您可以在服务器中使用React来呈现内容,但相同的代码应该在客户端中运行,您无法在客户端中访问fs
。如果您想在服务器中使用
fs
,下面是一个示例:在
package.json
文件上,确保具有对node的依赖关系这是我的
tsconfig.json
文件的样子:uqdfh47h2#
使用
node -v 10.15.0
和@类型/节点:似乎宣言被改写了...
fs
定义被声明为module
,因此您应该执行以下操作:import fs from "fs"; // Without star
编制日期:
var fs_1 = __importDefault(require("fs"));
或
const fs = require("fs");
而不是require("fs").default;
使用星星,您将得到
fs.default.TheFunctionYouWant
而不是fs.TheFunctionYouWant
更好的方法是到
console.log(fs);
看看它是什么导入的。ogq8wdun3#
最新植入,可以导入方法。
直接使用...
参考https://nodejs.org/docs/latest-v14.x/api/
neekobn84#
安装
@types/node
可能也有帮助:npm i --save-dev @types/node