繁体   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