簡體   English   中英

是否可以使用節點命令將 node.js 腳本作為模塊運行(不使用 package.json)?

[英]Is it possible to run a node.js script as a module with the node command (without using package.json)?

假設我有一個包含以下 node.js 腳本的code.js文件:

const axios = require('axios')

async function getData(){
    const response = await axios.get('https://mypage.com.br')
    console.log(response.data)
}
getData()

如果我使用node code.js執行它,它工作得很好......但是,我想將它作為一個模塊執行,這樣我就可以使用import語句並將await命令用作頂層。 我想在不使用package.json文件創建項目的情況下完成此操作。 我的最終結果是這樣的:

import axios from 'axios' 

const response = await axios.get('https://mypage.com.br')
console.log(response.data)

我還沒有設法讓它與node命令一起工作。 我知道我可以使用一個--input-type=module參數。 但是我嘗試運行node --input-type=module code.js並且收到以下錯誤:

SyntaxError: Cannot use import statement outside a module

所以,這意味着它甚至還沒有被識別為一個模塊。 有可能嗎? 我可以將命令node作為模塊執行一個獨立的腳本嗎(在頂層使用await時)?

將文件重命名為name.mjs --input-type參數僅適用於 STDIN 和--eval -d 文件。

這在命令行中是不可能的。 您只有兩個選項來制作文件 ESM。

  1. 編輯package.json以具有以下鍵和值。

     { "type": "module" }
  2. 將文件擴展名從.js更改為.mjs m代表模塊

總之,下面的標志無助於將類型更改為模塊。

$ node code.js --input-type=module

另一種不重命名文件的替代方法是使用pipe執行代碼。 以下命令作為模塊運行良好:

cat code.js | node --input-type=module

暫無
暫無

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

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