Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js fs enoint错误_Javascript_Angularjs_Node.js_Express - Fatal编程技术网

Javascript Node.js fs enoint错误

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) => {

我目前正在开发一个ExpressJS应用程序,它将yaml文件读取为json,然后将json发送到前端供Angular使用

下面是该项目的文件结构

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);
    }
});

成功了!谢谢