Node.js 在.mjs文件NodeJS中使用.js文件

Node.js 在.mjs文件NodeJS中使用.js文件,node.js,Node.js,我更熟悉使用require()将CommonJS文件加载到代码中。我尝试使用的库需要.mjs文件,所以我尝试让它工作。我认为这是比较直截了当的,但我遇到了一个问题,我甚至不知道搜索它是什么 在我的GoogleHomeNotification.js文件中,我用3个不同的函数定义了我的应用程序。在同一个文件中 App.broadcast("Broadcasting a message"); 或者我可以使用的任何其他.js文件 const ax = require(".

我更熟悉使用require()将CommonJS文件加载到代码中。我尝试使用的库需要.mjs文件,所以我尝试让它工作。我认为这是比较直截了当的,但我遇到了一个问题,我甚至不知道搜索它是什么

在我的GoogleHomeNotification.js文件中,我用3个不同的函数定义了我的应用程序。在同一个文件中

App.broadcast("Broadcasting a message");
或者我可以使用的任何其他.js文件

const ax = require("../objects/GoogleHomeNotification.js");
ax.broadcast("Test");
现在在我的test.mjs文件中

import * as GoogleNotification from "../objects/GoogleHomeNotification.js"
GoogleNotification.broadcast("Test");
当我尝试编译和运行它时,我得到

TypeError:GoogleNotification.broadcast不是一个函数。

非常感谢您为我应该学习/搜索的内容提供正确的方向

GoogleHomeNotification.js:

var App = {
    playin: false,
    DeviceIp: "",
    OriginalVolume: .5,
    Player: null,
    GoogleHome: function (host, url, callback) {},
    run: function (ip, text) {},
    broadcast: function(text){}
};
module.exports = App;
编辑:节点版本14.15.4

这应该可以工作

import { default as GoogleNotification } from "../objects/GoogleHomeNotification.js";
或者,如果您不需要别名,则只需使用

import App from "../objects/GoogleHomeNotification.js";

节点版本???很抱歉,我将其附加到原始帖子中,14.15.4我现在不需要别名,所以第二个选项可以工作,但我很好奇为什么原始导入没有?顺便谢谢你!这是因为当您使用import*from。。。导入整个模块。您的导出语句相当于导出默认应用程序;因此,如果您愿意,您应该像这样使用GoogleNotification.default.broadcast(“message”);