[英]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.