- 假设我的项目根目录中有一个名为"file.xml"的文件
- 假设我在测试中有一个测试文件/名为"test.js",它有
const file = fs.readFileSync("../file.xml");
Run Code Online (Sandbox Code Playgroud)
如果我现在node ./tests/test.js从我的项目的根目录运行它说../file.xml不存在.如果我从tests目录中运行相同的命令,那么它可以工作.
似乎fs.readFileSync是相对于调用脚本的目录,而不是脚本的实际位置.如果我fs.readFileSync("./file.xml")在test.js中写入,它看起来会更加混乱,并且与require语句中的相对路径不一致,这些路径是文件相对的.
为什么是这样?
如何避免重写fs.readFileSync中的路径?
car*_*ant 86
您可以解析相对路径的源文件的位置-而不是当前目录-使用path.resolve:
const path = require("path");
const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));
Run Code Online (Sandbox Code Playgroud)
Hal*_*991 17
为了扩展上面的内容,如果您将fs.readFileSync与TypeScript(当然还有 CommonJS)一起使用,语法如下:
import fs from 'fs';
import path from 'path';
const logo = fs.readFileSync(path.resolve(__dirname, './assets/img/logo.svg'));
Run Code Online (Sandbox Code Playgroud)
这是因为fs.readFileSync()相对于当前工作目录进行解析,请参阅Node.js 文件系统文档以获取更多信息。
来源:Node.js 的相对 fs.readFileSync 路径
当然,还有 CommonJS 格式:
const fs = require('fs');
const path = require('path');
const logo = fs.readFileSync(path.resolve(__dirname, './assets/img/logo.svg'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24385 次 |
| 最近记录: |