【问题标题】:Node.js - javascript calling functions from javascript fileNode.js - 从 javascript 文件调用 javascript 函数
【发布时间】:2019-11-09 01:02:50
【问题描述】:

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

文件结构: File Structure

距离公式.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 语句

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

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

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

    请参阅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);
    });
    

    【讨论】:

    • @jamo1909 - 这回答了你的问题吗?如果是这样,您可以通过单击答案左侧的复选标记在此处向社区表明这一点。这也将为您在 stackoverflow 上赢得一些声誉点,以遵循正确的程序。如果这没有回答您的问题,请评论您仍然对问题的哪一部分感到困惑。
    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 2019-01-16
    • 2013-06-20
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多