Node.js-来自javascript文件的javascript调用函数

我正在从事Express / NodeJs项目。我是Express / NodeJ的新手,我正在尝试将airportQuery.js导入DistanceFormula.js。我正在尝试直接从DistanceFormula.js导入airportQuery.js。我试图调用getairports并将答案返回给DistanceFormula.js。我不确定是否必须使用节点路由或执行是否正确。

文件结构: File Structure

DistanceFormula.JS

import {getairports} from "./api/airportQuery";
console.log(getairports('3c675a'));

AirportQuery.js

async function getairports(planeIcao) {
        let airport = {
            arrival: "",destination: ""
        };
        const airport_url = 'https://opensky-network.org/api/flights/aircraft?icao24=' + planeIcao + '&begin=1517184000&end=1517270400';
        const response = await fetch(airport_url);
        const data = await response.json();
        console.log(data[0]);
        console.log(data[0].estArrivalAirport);
        airport.arrival = data[0].estArrivalAirport;
        console.log(data[0].estDepartureAirport);
        airport.destination = data[0].estDepartureAirport;
        return airport
    }
const fetch = require("node-fetch");

export {getairports};

错误:语法错误:无法在模块外部使用import语句

wangling568112 回答:Node.js-来自javascript文件的javascript调用函数

要在node.js中使用模块,您必须执行以下操作:

  1. 正在运行支持ESM模块(v8.5 +)的nodejs版本。
  2. 使用以下命令行标志运行:node --experimental-modules
  3. 使用.mjs文件扩展名或specify it as a module in package.json
  4. 命名文件

有关更多信息,请参见relevant documentation

这不仅对您import的顶级文件是正确的,而且如果它也使用import,那么上面的相同规则也必须适用。


请注意,一旦使模块正确加载,您就会对这一行代码有疑问,因为getAirports()返回的是promise,而不是值。所有async函数总是返回一个承诺。函数中的return值将成为返回的Promise的已解析值。 async函数就是这样工作的。因此,请更改此内容:

console.log(getAirports('3c675a'));

对此:

getAirports('3c675a').then(result=> {
    console.log(result);
}).catch(err => {
    console.log(err);
});
本文链接:https://www.f2er.com/3134390.html

大家都在问