IOS美区账号微信: springsunshine2017

前端技术 · 2020年11月16日 0

nodejs报错:SyntaxError: Cannot use import statement outside a module

首先来看一下报错的源码,大概意思是nodejs不支持import语法,如果要支持,需要babel来支持。

SyntaxError: Cannot use import statement outside a module
?[90m at Module._compile (internal/modules/cjs/loader.js:881:18)?[39m
?[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)?[39m
?[90m at Module.load (internal/modules/cjs/loader.js:798:32)?[39m
?[90m at Function.Module._load (internal/modules/cjs/loader.js:711:12)?[39m
?[90m at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10)?[39m
?[90m at internal/main/run_main_module.js:17:11?[39m

针对这个问题,我们要先从CommonJS模块规范和ES6模块规范说起。Node应用由模块组成,采用CommonJS模块规范。所以,正常情况下我们要用module.exports来暴露对象,然后使用require来引用

let test=function(v){    console.log(v)}
module.exports.test=test;

let fun = require(‘./fun.js’);
fun.test(‘1231’)

但是如果你直接使用了ES6模块规范export{},或者export default {}来暴露对象,然后用import来引入当然是不行的,因为他不认识import。

let test=function(v){    console.log(v)}
export {test};

import {fun} from ‘./fun’;
fun.test(‘1231’)

如果你一定要使用怎么办,就像前文所说,需要babel来支持,可以参考这篇文章:https://blog.csdn.net/wushichao0325/article/details/85262063

以上就是nodejs报错:SyntaxError: Cannot use import statement outside a module的问题描述以及解决方法

拓展阅读:你应该知道的前端模块化