Javascript 无法使用mocha解析文件

Javascript 无法使用mocha解析文件,javascript,mocha.js,Javascript,Mocha.js,为什么在mocha中我的解析器返回一个错误,但在vanilla JS中它工作得很好?这是我保存在一个单独文件中的解析器,它应该解析CSV文件并从中提取值 parser.js: const fetch = require("node-fetch"); module.exports = async function(num) { const response = await fetch('../date.csv'); const data = await res

为什么在mocha中我的解析器返回一个错误,但在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];
}
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)
date.csv文件:

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];
}
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)
摩卡咖啡测试:

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];
}
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)
日志:

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];
}
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)
帐户
允诺{
TypeError:仅支持绝对URL
在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”(在节点版本v10.12.0中添加)

在“../date.csv”(p'../date.csv')前面的
p
是什么意思?“../date.csv'”前面的p是什么意思?我得到了SyntaxError:由于
p
我在本地运行此脚本,所以出现意外字符串,设置基本url是否仍然有效?“../date csv”前面的p是什么意思-抱歉,这是一个输入错误“我在本地运行此脚本,设置基本URL是否仍然有效?”我的意思是,文件位于本地目录中?请尝试分配一个值”file://path_to_root_dir"到变量BASE_URL。但是,我不知道“节点获取”是否支持“file://”协议。在任何情况下,最好在尽可能接近实际的条件下测试代码。如果实际上parser.js使用http或https协议,则在测试期间使用http或https是正确的。