首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError在构建Vue.js项目时使用Gridsome

TypeError在构建Vue.js项目时使用Gridsome
EN

Stack Overflow用户
提问于 2020-04-04 12:45:33
回答 2查看 1.1K关注 0票数 2

我正在使用Vue.jsGridsome为自己创建一个投资组合。但是,当我添加了一个JSON文件以在站点中包含我的配置文件信息时,我遇到了一个问题。这就是我如何在Index.vue组件中导入文件的方式:

代码语言:javascript
复制
<script>
import Intro from "~/components/Intro.vue";
import profile from "~/data/profile.json";

export default {
  components: {
    Intro,
  },
  metaInfo: {
    title: "Farzin Nasiri",
  },
  data: () => ({
    profile
  }),
};
</script>

以下是我如何使用它:

代码语言:javascript
复制
<Intro :personal="profile.personal" />

当我在开发中运行项目(命令:gridsome develop)时,一切正常,数据被正确读取。但是,当我想构建在gridsome build文件夹中创建生成文件的项目(命令:dist )时,会发生以下错误:

代码语言:javascript
复制
Initializing plugins...
Load sources - 0.04s
Create GraphQL schema - 0.05s
Create pages and templates - 0.03s
Generate temporary code - 0.03s
Bootstrap finish - 0.67s
Compile assets - 13.28s
Execute GraphQL (6 queries) - 0.03s
Write out page data (6 files) - 0s
Could not generate HTML for "/":
TypeError: Cannot read property '__esModule' of undefined
    at i (/home/farzin/MyProjects/portfolio.farzinnasiri.com/node_modules/vue-server-renderer/build.prod.js:1:68670)

这是我的项目结构(src文件夹):

代码语言:javascript
复制
├── components
│   ├── Intro.vue
│   └── README.md
├── data
│   └── profile.json
├── favicon.png
├── layouts
│   ├── Default.vue
│   └── README.md
├── main.js
├── pages
│   ├── About.vue
│   ├── Index.vue
│   └── README.md
├── templates
│   ├── README.md
│   └── Work.vue
└── vendor
    └── bootstrap.min.css

这是我的package.json

代码语言:javascript
复制
{
  "name": "portfolio.farzinnasiri.com",
  "version": "0.0.2",
  "private": true,
  "scripts": {
    "build": "gridsome build",
    "develop": "gridsome develop",
    "explore": "gridsome explore"
  },
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^1.2.28",
    "@fortawesome/free-brands-svg-icons": "^5.13.0",
    "@fortawesome/free-solid-svg-icons": "^5.13.0",
    "@fortawesome/vue-fontawesome": "^0.1.9",
    "@gridsome/source-filesystem": "^0.6.2",
    "@gridsome/transformer-remark": "^0.5.0",
    "gridsome": "^0.7.0"
  }
}

我真的不知道问题在哪里,需要帮助来解决它。耽误您时间,实在对不起

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-04 12:55:01

Gridsome & SSR

来自Gridsome博士

网格构建使用服务器端呈现(SSR)创建一个完全呈现的页面.如果Vue组件不支持SSR ..。它不会被正确渲染。 我们建议您将组件封装在<ClientOnly></ClientOnly>标记中,并在Vue的mounted()处理程序中导入库。

您得到的错误来自vue-server-renderer,它来自于Vue的服务器端API。您需要实现上面的说明。

~进口

另外,在不知道如何在开发中将JSON作为模块(即~)加载的情况下,这可能是一个问题,因为这在默认的Vue CLI环境中不起作用。

尝试从所有导入中删除~

代码语言:javascript
复制
import profile from "@/data/profile.json";
票数 2
EN

Stack Overflow用户

发布于 2020-04-04 12:58:19

您必须将导入的对象传递给vue,如下所示:

代码语言:javascript
复制
data: () => ({
    myProfile:profile
}),

因此,您可以使用它如下:

代码语言:javascript
复制
<Intro :personal="myProfile.personal" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61028286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档