Javascript Node.js fs enoint错误
我目前正在开发一个ExpressJS应用程序,它将yaml文件读取为json,然后将json发送到前端供Angular使用 下面是该项目的文件结构Javascript Node.js fs enoint错误,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,我目前正在开发一个ExpressJS应用程序,它将yaml文件读取为json,然后将json发送到前端供Angular使用 下面是该项目的文件结构 server/ ├── data/ │ └── file.yml ├── index.js └── routes/ └── index.js 在/routes/中,我有一个index.js文件,其中包含了我的路由。下面是我用来访问yml文件的路径: app.get('/api/assets', (req,res) => {
server/
├── data/
│ └── file.yml
├── index.js
└── routes/
└── index.js
在/routes/
中,我有一个index.js文件,其中包含了我的路由。下面是我用来访问yml
文件的路径:
app.get('/api/assets', (req,res) => {
try {
let doc = yaml.safeLoad(fs.readFileSync('../data/file.yml', 'utf8'));
// console.log(doc);
res.json(doc);
} catch (err) {
let doc = {
"name": err.name,
"reason": err.reason,
"message": err.message
}
res.json(doc);
}
});
无论出于何种原因,在启动服务器并点击/api/assets路径后,我得到以下错误:
{
"name": "Error",
"message": "ENOENT: no such file or directory, open 'tenant-assets.yml'"
}
我尝试了一些方法来让它工作,例如将文件名更改为
/data/file.yml
和data/file.yml
,认为它是从entry index.js调用它们的。因此,我有点被卡住了,不知道发生了什么。我意识到我是在从应用程序的根目录开始旋转服务器。为了修复它,我必须将文件的路径更改为/server/data/file.yml
要使用当前文件的相对路径,建议使用path.join()
和\u dirname
就你而言:
const path = require('path');
app.get('/api/assets', (req, res) => {
try {
let doc = yaml.safeLoad(fs.readFileSync(path.join(__dirname, '../data/file.yml'), 'utf8'));
// console.log(doc);
res.json(doc);
} catch (err) {
let doc = {
"name": err.name,
"reason": err.reason,
"message": err.message
}
res.json(doc);
}
});
成功了!谢谢