使用express服務端渲染,如果babel中配置了import會報錯,刪掉就可以正常啟動。但是這個配置,用webpack,不管是devServer,還是編譯文件,都正常。只有在嘗試用express啟動的時候會包錯就是在.babelrc文件中的plugins的這段代碼:["import",{"libraryName":"antd","libraryDirectory":"es","style":true}](function(exports,require,module,__filename,__dirname){import'../../style/index.less';^^^^^^^^^^^^^^^^^^^^^^^^SyntaxError:UnexpectedstringatnewScript(vm.js:79:7)atcreateScript(vm.js:251:10)atObject.runInThisContext(vm.js:303:10)atModule._compile(internal/modules/cjs/loader.js:657:28)...我的相關配置文件:.babel{"presets":["@babel/preset-env","@babel/preset-react"],"plugins":["@babel/plugin-proposal-object-rest-spread","@babel/plugin-transform-runtime",["import",{"libraryName":"antd","libraryDirectory":"es","style":true}]]}server.jsrequire('ignore-styles');varfs=require('fs');varbabelConfig=JSON.parse(fs.readFileSync('./.babelrc'));require('@babel/register')(babelConfig);require('./express.js');express.jsimportpathfrom'path';importfsfrom'fs';importexpressfrom'express';importReactfrom'react';import{renderToString}from'react-dom/server';import{StaticRouter}from'react-router-dom';importHomefrom'./src/component/Home';constROOT_PATH=path.resolve(__dirname);constBUILD_PATH=path.resolve(ROOT_PATH,'build');constapp=express();app.use(express.static(BUILD_PATH));app.use('*',function(req,res){letcontext={};consttemplate=renderToString();if(context.status===404){res.status(404);}fs.readFile(path.resolve(BUILD_PATH+'/index.html'),'utf8',(err,data)=>{if(err){console.error(err);returnres.status(500).send('Anerroroccurred');}returnres.send(data.replace('',`${template}`))});});constserver=app.listen(3000,()=>{consthost=server.address().address;constport=server.address().port;console.log('serverisstartat',host,port);});啟動node./server.js
antd的babel-plugin-import插件,服務端渲染時,如果babel中配置了import會報錯,刪掉正常啟動 求老司機指點!
慕容708150
2019-08-13 23:46:38