2017-06-01 101 views
1

我写有反应,节点的应用程序,但我的本地主机未运行,而我有这样的错误:无法读取的不确定(节点JS)属性“路径”

UNHANDLED REJECTION TypeError: Cannot read property 'path' of undefined 

所有NPM-模块安装,但这个错误不允许启动我的项目。这是我第一次尝试用节点编写代码,所以也许答案就近了。 下面我的node.js:

const _ = require("lodash") 
const Promise = require("bluebird") 
const path = require("path") 
const select = require(`unist-util-select`) 
const fs = require(`fs-extra`) 

exports.createPages = ({ graphql, boundActionCreators }) => { 
    const { upsertPage } = boundActionCreators 

    return new Promise((resolve, reject) => { 
    const pages = [] 
    const blogPost = path.resolve("./src/templates/blog-post.js") 
    resolve(
     graphql(
     ` 
     { 
     allMarkdownRemark(limit: 1000) { 
      edges { 
      node { 
       fields { 
       slug 
       } 
      } 
      } 
     } 
     } 
    ` 
    ).then(result => { 
     if (result.errors) { 
      console.log(result.errors) 
      reject(result.errors) 
     } 

     // Create blog posts pages. 
     _.each(result.data.allMarkdownRemark.edges, edge => { 
      upsertPage({ 
      path: edge.node.fields.slug, // required 
      component: blogPost, 
      context: { 
       slug: edge.node.fields.slug, 
      }, 
      }) 
     }) 
     }) 
    ) 
    }) 
} 

// Add custom slug for blog posts to both File and MarkdownRemark nodes. 
exports.onNodeCreate = ({ node, boundActionCreators, getNode }) => { 
    const { addFieldToNode } = boundActionCreators 
    if (node.internal.type === `File`) { 
    const parsedFilePath = path.parse(node.relativePath) 
    const slug = `/${parsedFilePath.dir}/` 
    addFieldToNode({ node, fieldName: `slug`, fieldValue: slug }) 
    } else if (node.internal.type === `MarkdownRemark`) { 
    const fileNode = getNode(node.parent) 
    addFieldToNode({ 
     node, 
     fieldName: `slug`, 
     fieldValue: fileNode.fields.slug, 
    }) 
    } 
} 
+0

你能告诉我哪一行发生错误吗? –

+0

它并不是完全显示行数,但它显示了这一点: D:\ IT \ Valeria \ Work \ Project \ client-only-paths \ node_modules \ bluebird \ js \ release \ async.js:61 'fn = function(){throw arg; };' –

回答

0

我觉得你的问题是在这里:

).then(result => { 
    if (result.errors) { 
     console.log(result.errors) 
     reject(result.errors) 
    } 

你是不是在if块早回来,所以功能将继续,并试图后做的一切。

相反,只是扔在那里一回:

return reject(result.errors) // Now will not continue

但更具体的,对你的承诺,这就是为什么你看到UNHANDLED REJECTION警告没有错误处理程序。

+0

不幸的是,它并没有帮助,但我解决了它。 我删除npm模块,重新启动我的电脑并重新安装:) –

+0

对不起:祝你好运 – sparrow

相关问题