SyntaxError: Cannot use import statement outside a module 错误处理

在使用 vite 时,有个需求是把项目拷贝到另一个目录下运行,出现以下错误 SyntaxError: Cannot use import statement outside a module

运行 npm run build 时,出现类似以下的错误:

1
2
3
4
node_modules/vite/bin/vite.js:2
import { performance } from 'node:perf_hooks'

Cannot use import statement outside a module

这个报错有三种情况,大家可以依据各自的情况进行处理。

情况1:node_modules缓存

这种情况是由于 node_modules 缓存的文件,这时只要删除 node_modules ,并重新安装依赖包。

1
npm install

再重新运行即可解决。

情况2:node版本较低

Vite 要求 Node.js 版本大于 18+ 20+,如果不满足,请升级本机的 npm 版本

情况3:

脚本没有在 module 范围内执行,例如写成下面的形式会报错

1
<script src="./file.js"></script>

需要改成

1
<script type="module" src="./file.js"></script>

Uncaught ReferenceError: Buffer is not defined 的错误处理

在使用 xml2json 包时,发现使用 json2xml 函数时,出现以下错误 Uncaught ReferenceError: Buffer is not defined

查看代码发现报错语句为 json2xml.js 的第 4 行:

1
if (json instanceof Buffer) 

这是因为在某些情况下,Buffer 包不存在。

跨域请求获取不到特定 header 头的解决办法

一个需求是这样:要用 js 来读 ajax 接口中的header头的某个字段,例如 Etag
这时有可能出现两种报错信息。
第一:全部 Response 字段里获取不到指定字段。

1
2
3
4
5
console.log(xhr.getAllResponseHeaders());
/*
content-length: 44
content-type: application/json; charset=utf-8
*/

发现没有 Etag 这个字段。


:D 一言句子获取中...