是否可以使用node命令(不使用package.json)将node.js脚本作为模块运行?

ffscu2ro  于 2023-01-08  发布在  Node.js
关注(0)|答案(3)|浏览(147)

假设我有一个code.js文件,其中包含以下node.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)?

svgewumm

svgewumm1#

将文件重命名为name.mjs。此--input-type参数仅适用于STDIN和--eval-d文件。

camsedfj

camsedfj2#

这在命令行中是不可能的,你只有两个选项来创建ESM文件。
1.编辑package.json,使其具有以下键和值。

{
  "type": "module"
}

1.将文件扩展名从.js更改为.mjsm 代表 * 模块 *。
总之,下面的标志对将类型更改为module没有帮助。

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

xienkqul3#

另一种不用重命名文件的方法是使用pipe执行代码。

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

相关问题