让我们说我有一个node.js应用程序,它没有通过我的webpack捆绑:
节点应用
const Html = require('./build/ssr-bundle.js'); let result = Html.ssrbundle.render(); console.log(result);
这是我的ES6 / JSX文件,它正在由webpack处理,我希望能够在我的节点应用程序中访问该渲染功能(你猜对了,我正在尝试SSR反应的东西;)
src / Html.js - (webpack) - >建立/ SSR-bundle.js
import React from 'react'; import ReactDOMServer from 'react-dom/server'; import CustomComponent from './custom-component.js'; module.exports = { render : function () { return ReactDOMServer.renderToString(<CustomComponent />); } };
这是我的Webpack配置
webpack.config.js
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' };
无论我做什么,我都无法弄清楚如何正确使用导出的变量&#34; ssrbundle&#34;然后是渲染功能。如果我的节点应用程序包含在捆绑包中,一切都会好的,但这不是我想要做的。
答案 0 :(得分:1)
正如apokryfos建议的那样,我使用了libraryTarget Webpack设置。您可以在此处找到有关使用Webpack创建库(我真正想要实现的目标)的更多信息:
https://webpack.js.org/guides/author-libraries/
以下是代码示例:
https://github.com/kalcifer/webpack-library-example/blob/master/webpack.config.babel.js
我的诀窍是将libraryTarget设置为“umd”,这与默认设置的“var”设置不同,适合将脚本包含在HTML文件中