Rah*_*rma 15 javascript fs node.js typescript
我最近在使用 typescript 和 fs/promises API,并且在编译和运行 typescript 代码时遇到了这个错误,我收到了这个错误说
internal/modules/cjs/loader.js:968
throw err;
^
Error: Cannot find module 'fs/promises'
Run Code Online (Sandbox Code Playgroud)
当我查看编译后的代码时,这就是我发现的......
var promises_1 = require("fs/promises");
Run Code Online (Sandbox Code Playgroud)
通过将其更改为开始工作
var promises_1 = require("fs").promises;
Run Code Online (Sandbox Code Playgroud)
这是我的打字稿文件导入
import { readFile, writeFile, appendFile } from "fs/promises";
Run Code Online (Sandbox Code Playgroud)
我的package.json文件
"devDependencies": {
"@types/cheerio": "^0.22.22",
"@types/got": "^9.6.11",
"@types/node": "^14.14.6"
},
"dependencies": {
"cheerio": "^1.0.0-rc.3",
"got": "^11.8.0"
}
Run Code Online (Sandbox Code Playgroud)
和我的tsconfig.json文件
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"outDir": "dist",
"sourceMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
Run Code Online (Sandbox Code Playgroud)
节点版本12.18.0
有没有人面临同样的问题,或者我做错了什么?
请帮忙
谢谢...
rat*_*ray 60
我最喜欢的解决方案:
import { promises as fs } from 'fs';
async function main() {
await fs.writeFile('test.txt', 'hello');
}
Run Code Online (Sandbox Code Playgroud)
Rah*_*rma 33
错误是由于不受支持的 Node 版本 12.x 不支持此 require 语句...
var promises_1 = require("fs/promises");
Run Code Online (Sandbox Code Playgroud)
但这有效
var promises_1 = require("fs").promises;
Run Code Online (Sandbox Code Playgroud)
这可以通过将节点更新到最新来解决。
小智 7
在 Node v12.18.1 中对我有用的是:
import { promises } from "fs";
const { readFile, writeFile } = promises;
Run Code Online (Sandbox Code Playgroud)
我可以在 NestJS/express 上下文中使用这两种方法。