【React】关于Node服务如何使用ES6 import的疑问
在研究服务端渲染,之前服务端代码都是用require来导入模块的。
但是搜了一些关于服务端渲染的文章。大多都是import导入的模块,如下这个:
但是Node服务端运行会报错,不支持这个import,这怎么解决?也用babel-loader?又找到了如下文章:
解决node不兼容import
但是我在babel转换的过程中报了一大堆错误。比如:
Can't resolve 'tinyliquid'
Can't resolve 'fs'
求问这该怎么解决?
使用了babel-register可以正常启动了,但是koa-router会报错
这是我的入口文件
require("babel-register")({'presets': ["es2015", 'react', 'stage-3'],
});
require('babel-polyfill');
require('./server.js');
这是server.js
let koa = require('koa');let views = require('koa-views');
let statics = require('koa-static');
let router = require('koa-router')();
import React from 'react';
// import {renderToString} from 'react-dom/server';
// import App from './views/server/components/App.jsx';
let app = new koa();
app.use(views(__dirname + '/views/server', {map: {html: 'nunjucks'}}));
app.use(async (ctx, next) => {
console.log(ctx.request.url);
await next();
})
app.use(statics('.'));
router.get('/', async function (ctx, next) {
// await ctx.render('index', {
// root: renderToString(<App/>)
// });
await ctx.render('index.html');
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(8080, () => {
console.log('服务启动,localhost:8080')
});
报了如下错误:
回答
增加了plugins: ['add-module-exports']这个插件OK了
直接运行的话,你应该使用 babel-register 而不是 babel-loader(用于 Webpack),
https://babeljs.io/docs/usage...
注意,启动文件不能使用 es6 import/export 语法
node已经支持import,当然最好还是用babel-register
注意babel-register在当前文件无效,只有之后引入的文件才有效
以上是 【React】关于Node服务如何使用ES6 import的疑问 的全部内容, 来源链接: utcz.com/a/76099.html