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 如何正确地将ES6模块函数导出为库,以便在节点应用程序中使用?_Javascript_Node.js_Webpack_Es6 Modules - Fatal编程技术网

Javascript 如何正确地将ES6模块函数导出为库,以便在节点应用程序中使用?

Javascript 如何正确地将ES6模块函数导出为库,以便在节点应用程序中使用?,javascript,node.js,webpack,es6-modules,Javascript,Node.js,Webpack,Es6 Modules,假设我有一个node.js应用程序,它没有经过我的网页包绑定: 节点应用程序 这是我的ES6/JSX文件,正在由webpack处理,我希望能够在我的节点应用程序中访问该渲染函数(你猜对了,我正在尝试SSR react stuff;) src/Html.js-(webpack)->build/ssr bundle.js 无论我做什么,我都不知道如何正确使用导出的变量“ssrbundle”以及随后的render函数。如果捆绑包中包含我的节点应用程序,一切都会正常,但这不是我想要做的。正如apokry

假设我有一个node.js应用程序,它没有经过我的网页包绑定:

节点应用程序

这是我的ES6/JSX文件,正在由webpack处理,我希望能够在我的节点应用程序中访问该渲染函数(你猜对了,我正在尝试SSR react stuff;)

src/Html.js-(webpack)->build/ssr bundle.js


无论我做什么,我都不知道如何正确使用导出的变量“ssrbundle”以及随后的render函数。如果捆绑包中包含我的节点应用程序,一切都会正常,但这不是我想要做的。

正如apokryfos所建议的,我使用了libraryTarget网页包设置。您可以在此处找到有关使用Webpack编写库(我真正想要实现的目标)的更多信息:

下面是代码示例:


我的诀窍是将libraryTarget设置为“umd”,这与默认设置的“var”设置不同,后者适用于将脚本包含在HTML文件中

我认为您需要在Web包配置中使用,以定义如何公开libraryTarget的Bundle特定选项。谢谢我将在下面详细发布解决方案
const  Html = require('./build/ssr-bundle.js');
let result = Html.ssrbundle.render();
console.log(result);
import React from 'react';
import  ReactDOMServer from 'react-dom/server';
import  CustomComponent from './custom-component.js';


module.exports = {
     render : function () {
         return ReactDOMServer.renderToString(<CustomComponent />);
     } };
 var path = require('path');
 module.exports = {
     entry: {
         ssr: './src/Html.js',
         //frontend: './src/frontend-Html.js'
     },
     output: {
         path: path.resolve(__dirname, 'build'),
         filename: 'ssr-bundle.js',
             library: 'ssrbundle'
     },
     module: {
         rules: [
             {
                 test: /\.js$/,
                 loader: 'babel-loader',
                 query: {
                     presets: ['env','react'],
                     plugins: ["transform-es2015-destructuring", "transform-object-rest-spread"]
                 }
             },
             {
                 test:/\.css$/,
                 use:['style-loader','css-loader']
             }
         ]
     },
     stats: {
         colors: true
     },
     devtool: 'source-map'
 };