簡體   English   中英

Node.js - javascript 從 javascript 文件調用函數

[英]Node.js - javascript calling functions from javascript file

我正在開發一個 Express/NodeJs 項目。 我是 Express/NodeJs 的新手,我正在嘗試將 airportQuery.js 導入 DistanceFormula.js。 我正在嘗試從 DistanceFormula.js 直接導入 airportQuery.js。 我試圖調用 getAirports 並將答案返回給 DistanceFormula.js。 我不確定我是否必須使用節點路由,或者我是否正確執行。

文件結構:文件結構

距離公式.JS

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

機場查詢.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};

錯誤:未捕獲的語法錯誤:無法在模塊外使用導入語句

要使用 node.js 中的模塊,您必須執行以下操作:

  1. 正在運行支持 ESM 模塊 (v8.5+) 的 nodejs 版本。
  2. 使用此命令行標志運行: node --experimental-modules
  3. 使用.mjs 文件擴展名命名您的文件或將其指定為 package.json 中的模塊

有關更多信息,請參閱相關文檔

這不僅適用於您import的頂級文件,而且如果它也使用import ,那么上述相同的規則也必須適用於它。


請注意,一旦您的模塊正確加載,您就會遇到這行代碼的問題,因為getAirports()返回 promise,而不是一個值。 所有async函數總是返回 promise。 function 中的return值將成為返回的 promise 的解析值。 這就是async函數的工作方式。 所以,改變這個:

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

對此:

getAirports('3c675a').then(result=> {
    console.log(result);
}).catch(err => {
    console.log(err);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM