Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.JS是否将ES对象导出到NPM包中?_Javascript_Node.js_Npm - Fatal编程技术网

Javascript Node.JS是否将ES对象导出到NPM包中?

Javascript Node.JS是否将ES对象导出到NPM包中?,javascript,node.js,npm,Javascript,Node.js,Npm,我有一个ES5对象/函数,我正试图在NPM包中使用它。该对象位于命名空间中,例如 MY_NAMESPACE.myObject = function(){...} 其中我的_名称空间只是一个对象。对于web,我只需在对象/函数所在的位置链接一个JS文件,然后执行以下操作 let whatever = new MY_NAMESPACE.myObject(); 我已将源代码保存为my_function.js 我像这样创建了一个npm包,以便在我的应用程序中安装它 { "

我有一个ES5对象/函数,我正试图在NPM包中使用它。该对象位于命名空间中,例如

 MY_NAMESPACE.myObject = function(){...}
其中我的_名称空间只是一个对象。对于web,我只需在对象/函数所在的位置链接一个JS文件,然后执行以下操作

 let whatever = new MY_NAMESPACE.myObject();
我已将源代码保存为
my_function.js

我像这样创建了一个npm包,以便在我的应用程序中安装它

 {
       "name": "whatever",
       "version": "1.0.0",
       "description": "",  
       "main": "index.js",
       "scripts": {
              "test": "echo \"Error: no test specified\" && exit 1"
       },  
       "author": "whatever",
        "license": "Apache-2.0",  
        "exports" :{
             "./my_function.js" : "./my_function.js"
       }
   }
当我在本地安装包时,我可以看到
my_function.js
位于
node\u modules/which

我现在如何在我的应用程序中引用/导入
my_function.js
,然后才能调用

  let whatever = new MY_NAMESPACE.myObject();

一些糟糕的Node.JS文档提到.mjs文件以添加ES模块,但找不到示例/教程。。。我还试图不添加任何东西,比如
module.exports
my_function.js
,因为该文件会不断更新并在web/前端环境中使用


所以基本上,我正在尝试在NPM包中附加一个.js文件,并希望它的内容在我的应用程序中可用。我希望,在包的
index.js
中添加一些东西可以呈现文件中声明的对象,在我的应用程序中可以使用这些对象。。。我只是不知道该怎么办。

公开函数的一种模式是这样使用:

# my_function.js

MY_NAMESPACE = {};
MY_NAMESPACE.myObject = function(){...};

module.exports = MY_NAMESPACE;
然后它可以被同一目录中的另一个模块使用,如下所示:

# consumer JS file

let MY_NAMESPACE = require('./my_function');

let test = new MY_NAMESPACE.myObject();

如果您真的想将my_function.js打包到一个单独的node.js包中(例如,如果您需要在项目之间共享它),那么还需要采取一些额外的步骤。是一个很好的起点。

是的,这就是我要做的,打包它。我是否需要向我的包的index.js添加任何内容?如果您只想在本地导入文件,则无需向index.js添加任何内容,如示例所示。如果您想构建一个捆绑包(例如,与npm一起使用,使用package.json),那么是的,该包可能会有自己的index.js导出所有内容。但是,如果你只是问“我如何构建一个NoDE.JS包”,你应该看看上面链接的文档来获得概述。考虑写一个新的问题,更清楚地解释你在构建NPM包的过程中遇到了什么问题。例如,显示您创建的package.json,并指出我提供的链接中的一个具体步骤,该步骤不清楚或您遇到问题。您能否解释为什么使用
module.exports
这是web/front的问题?例如,lodash可以在前端和后端使用。您可以看到如何创建,然后它将构建为“因为该文件会不断更新,并在web/前端环境中使用”。很明显,我们不希望操纵该文件,这正是这个问题的要求。使用“module.exports”有什么问题在web/前端环境中?我们不希望向该文件注入任何内容,也不希望探讨是否可以这样做