无法使用 mocha 解析文件

Cannot parse file with mocha

为什么在 mocha 中我的解析器 returns 出错,但在 vanilla JS 中却运行良好?这是我保存在单独文件中的解析器,它应该解析 CSV 文件并从中提取值。

parser.js:

const fetch = require("node-fetch");

module.exports = async function(num) {
    const response = await fetch('../date.csv');
    const data = await response.text();
    let rows = data.split('\n');
    let res = rows[0].split(',');
    return res[num];
}

date.csv 文件:

1,?start=2013-09-01&end=2013-09-05,SomeInfo,false
2,?start=2014-09-01&end=2014-09-05,SomeInfo,false

摩卡测试:

let file = require('../utils/parser');
let param = file(1);

describe('Account', () => {
    it('Print', () => {
        console.log(param);
       });
   });

日志:

Account
Promise {
  <rejected> TypeError: Only absolute URLs are supported
      at getNodeRequestOptions (node_modules/node-fetch/lib/index.js:1305:9)

您应该为文件提供绝对 url。

例如,在开始测试之前,设置一些环境变量,使其指向服务器的根 url:

package.json

"scripts": {
  ...
  "test": "BASE_URL='http://127.0.0.1:8080' mocha"
  ...
}

然后在代码中做这样的事情:

parser.js

const fetch = require("node-fetch");

module.exports = async function(num) {
    const absPath = process.env.BASE_URL + '../date.csv'
    const response = await fetch(absPath);
    const data = await response.text();
    let rows = data.split('\n');
    let res = rows[0].split(',');
    return res[num];
}

或使用节点核心包“url”中的url.pathToFileURL(在节点版本 v10.12.0 中添加)