我正在尝试为我的React应用设置SSR。我正在使用应用程序中NPM包(私有)中的组件。该应用程序使用Apollo Client,并发出GraphQL请求。所讨论的模块是一个简单的apollo-link-state
模块,如果用户已登录,则返回该模块,否则返回一个突变。该应用程序是使用loadable
动态加载的。问题是我的所有链接状态模块都可以正常工作,除了用户模块之外。我检查了webpack构建文件,这就是我得到的:
/*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "../my-package/node_modules/@babel/runtime/regenerator/index.js"); /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); Object.defineProperty(exports, "__esModule", { value: true }); exports.typeDefs = exports.defaults = exports.resolvers = undefined; //Do my processing here (using apolloClient for async mutations ) exports.default = { resolvers: resolvers, defaults: defaults, typeDefs: typeDefs };
我的webpack配置非常简单:
{ entry: './server.js', output: { filename: 'server.js', path: path.resolve(__dirname, 'build'), }, resolve: { modules: [path.resolve(__dirname, 'src'), 'node_modules'], aliases: // my aliases here all work correctly }, target: 'node', node: { __dirname: false }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: 'babel-loader' }, { exclude: [/\.js$/, /\.html$/, /\.json$/], loader: 'file-loader', options: { name: 'static/media/[name].[hash:8].[ext]', publicPath: '/', emitFile: false }, }, { sideEffects: false, }, ], }, plugins:[new LoadablePlugin()] };
我尝试设置输出字段
libraryExport : default
,libraryTarget: 'commonjs2'
。这和@babel/transform-runtime
插件有关吗?我不确定为什么只有一个模块被标记为no export provided
。当我需要构建文件中的文件时,它将返回一个空对象。
这是我的.babelrc
,很好:
{ "presets": [ ["@babel/preset-env", {"modules": false}], "@babel/preset-react", ], "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-proposal-object-rest-spread", "@babel/plugin-syntax-dynamic-import", [ "@babel/transform-runtime", { "regenerator": true, "useESModules": true, "absoluteRuntime": true, } ] ] }
关于可能出什么问题的建议也将受到高度赞赏,我将尽其所能。我尚不清楚为什么只有一个模块会表现出这种行为,我试图查看是否在程序包的
sideEffects
中设置package.json
会有所帮助。
编辑:sideEffects
不起作用。我注意到这是使用_babel_runtime_regenerator__
的唯一文件。由于我正在使用Babel 7,因此我不需要使用plugin-add-module-exports
,但到目前为止还没有运气。该模块仍然在require
我也尝试设置preset-env
选项modules : "commonjs"
,但这也无济于事。为什么webpack不能仅在此模块中检测到导出?
我正在尝试为我的React应用设置SSR。我正在使用应用程序中NPM包(私有)中的组件。该应用程序使用Apollo Client,并发出GraphQL请求。有问题的模块是一个简单的...
我在类似情况下遇到类似问题: