【完美解决】ES6语法导入报错 SyntaxError: Cannot use import statement outside a module

SyntaxError: Cannot use import statement outside a module

在练习反混淆的时候报错,使用的代码和文档一致:

import traverse from "@babel/traverse";
import { parse } from "@babel/parser";
import generate from "@babel/generator";
import * as types from "@babel/types";
import fs from "fs";
const code = `var a = !![];
              var b = "abc" == "bcd";
              var c = (1 << 3) | 2;
              var d = parseInt("5" + "0");`;

let ast = parse(code);
traverse(ast, {
  "UnaryExpression|BinaryExpression|ConditionalExpression|CallExpression": (
    path
  ) => {
    const { confident, value } = path.evaluate();
    if (value == Infinity || value == -Infinity) return;
    confident && path.replaceWith(types.valueToNode(value));
  },
});

const { code: output } = generate(ast);
console.log(output);

报错原因是不能使用 import 语句。在 Node.js 环境中默认使用的是 CommonJS 规范。需要使用 require 语句进行导入。import 是 ES6 中的模块化写法,CommonJS 模块与 ES6 模块不兼容。

image-20240405122011715

解决问题

解决也很简单,他在报错中提示了:(node:23888) Warning: To load an ES module, set “type”: “module” in the package.json or use the .mjs extension.

意思是在package.json文件中配置 “type”: “module” 就行

问题又来了,我没有package.json怎么办

// 一 : cd 到js文件目录下
// 二 : 输入 npm init
// 三 : 提示输入一些信息,可以全部按回车健 默认信息

然后就会出现package.json文件

打开后 配置type:

image-20240405122745609

就可以运行成功了

如果报错 TypeError: traverse is not a function
看我的另一篇文章 【完美解决】@babel/xxx :TypeError: traverse is not a function 和 TypeError: generateis not a function

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值