小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
每天一小步,成功一大步。大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习每天小知识。
复制代码
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
解决node.js使用import导入模块报错的问题。亲测成功。
复制代码
报错代码
f:\nodejsDemo\lab03\testingStatsES6.js:1
import {mean,stddev} from "./statsES6";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:988:16)
at Module._compile (internal/modules/cjs/loader.js:1036:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
at internal/main/run_main_module.js:17:47
复制代码
原理
ES6发布后module已经成为了标准,使用export导出接口,使用import来导入模块。node.js已经实现了ES6的大部分新特性,但是由于采用的CommonJS规范,所以使用require来导入模块,使用exports或者module.exports来导出模块。
解决方案
知道了原理我们就能想出解决方案了。我们可以使用babel相关模块来进行转义支持,通过使用babel编译,使其转化为node.js的模块。
下载babel相关模块
在终端执行以下语句进行模块安装。
1. npm install --save babel-core
2. npm install --save babel-preset-env
3. npm install babel-cli -g
复制代码
创建babel.babelrc文件。
在根目录下创建babel.babelrc文件。内容为:
{
"presets": [
"env"
],
"plugins": []
}
复制代码
运行指令
一般node.js文件是使用
node server.js
使用import的js文件就需要使用以下命令
babel-node --presets env server.js
案例
来试一下。
const sum = (x,y) => x+y;
const square = x => x*x;
const mean = data => data.reduce(sum)/data.length;
const stddev = d =>{
let m = mean(d);
return Math.sqrt(d.map(x => x-m)
.map(square)
.reduce(sum)/(d.length-1));
}
//使用export 导出两个接口mean用来计算平均值,stddev用来计算标准差
export {mean,stddev};
复制代码
import {mean,stddev} from "./statsES6";
const data = [10,20,80,15,30,60];
let average = mean(data);
let sd = stddev(data);
console.log(average);
console.log(sd);
复制代码
结语
以上就是我对node.js中使用import导入模块报错的一些浅见,如有错误之处,欢迎掘友们批评指正。希望能对大家有所帮助。
近期评论