跳至主要內容

Cannot use import statement outside a module

Tom Tan大约 1 分钟使用指南页面配置使用指南

问题表现

Vuepress项目在构建的时候, 会提示 import xxxx from 'xxx' 报以下这个错误.

SyntaxError: Cannot use import statement outside a module

这可能是构建的时候 输出的是代码是commonjs标准的, 但可能某些原因造成 某个文件或依赖 没有转成 commonjs标准。

在网上搜寻了大量的相关信息, 以下一些解决方案

解决方案一

有人说在package.json加上 type = module" 可以解决

{
    "type": "module",
}

你们试试看? 但是我们这个项目不管用。 这让我想到使用 babel, 试了几个方法, 装了几个babel的依赖都不会。

解决方案二

babel的方案失败了, 只能另辟蹊径了。再详细分析一下 是 vue-scriptx 这个组件报错的。 提示 import { App, h } from 'vue' 这个报错了。
上了github看了源代码, 发现文件不大, 后来直接复制源代码, 在相对路径,直接引入 解决了。

像这样的

import { defineClientConfig } from "@vuepress/client";
import Ads from "vue-google-adsense";
import ScriptX from "./vue-scriptx";

export default defineClientConfig({
  async enhance({ app, router }) {
    app.use(ScriptX);
    app.use(Ads.Adsense);
    app.use(Ads.InArticleAdsense);
    app.use(Ads.InFeedAdsense);
  },
  setup() {},
  rootComponents: [],
});

希望对你有帮助。

上次编辑于:
贡献者: Tom Tan