[英]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。
編輯package.json
以具有以下鍵和值。
{ "type": "module" }
將文件擴展名從.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.