【React】关于Node服务如何使用ES6 import的疑问

在研究服务端渲染,之前服务端代码都是用require来导入模块的。
但是搜了一些关于服务端渲染的文章。大多都是import导入的模块,如下这个:

【React】关于Node服务如何使用ES6 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')

});

报了如下错误:

【React】关于Node服务如何使用ES6 import的疑问

回答

增加了plugins: ['add-module-exports']这个插件OK了

直接运行的话,你应该使用 babel-register 而不是 babel-loader(用于 Webpack),

https://babeljs.io/docs/usage...

注意,启动文件不能使用 es6 import/export 语法

【React】关于Node服务如何使用ES6 import的疑问
node已经支持import,当然最好还是用babel-register
注意babel-register在当前文件无效,只有之后引入的文件才有效

以上是 【React】关于Node服务如何使用ES6 import的疑问 的全部内容, 来源链接: utcz.com/a/76099.html

回到顶部