【问题标题】:Why can I not access a function through an instance of a package using import?为什么我不能通过使用导入的包实例访问函数?
【发布时间】:2020-09-02 10:24:27
【问题描述】:

我正在尝试使用 ES6 导入,但遇到了 vue-server-renderer 的问题。是similar to this question,但不完全相同。

当我运行这个时,我收到一条错误消息 TypeError: Cannot read property 'createBundleRenderer' of undefined

import vueServerRenderer from 'vue-server-renderer'
const createRenderer = (serverBundle) =>
    vueServerRenderer.createBundleRenderer(serverBundle, {
        runInNewContext: false,
        template: fs.readFileSync(path.resolve(__dirname, indexFolder,'index.html'), 'utf-8')
    });

但如果我执行以下操作,则不会出错:

import {createBundleRenderer} from 'vue-server-renderer'
const createRenderer = (serverBundle) =>
    createBundleRenderer(serverBundle, {
        runInNewContext: false,
        template: fs.readFileSync(path.resolve(__dirname, indexFolder,'index.html'), 'utf-8')
    });

为什么我必须直接从 vue-server-renderer 导入函数?通过 vue-server-renderer 实例使用 vueServerRenderer.createBundleRenderer() 而不仅仅是 createBundleRenderer() 访问它有什么问题?

【问题讨论】:

    标签: javascript node.js vue.js ecmascript-6 vuejs2


    【解决方案1】:

    原因很简单,如果你去 'vue-server-renderer' 你会得到 {createBundleRenderer} 作为导出成员。

    如果你想用like

    import vueServerRenderer from 'vue-server-renderer'
    const createRenderer = (serverBundle) =>
        vueServerRenderer.createBundleRenderer(serverBundle, {
            runInNewContext: false,
            template: fs.readFileSync(path.resolve(__dirname, indexFolder,'index.html'), 'utf-8')
        });
    

    有些错误与导入有关,你应该像这样导入 import * as vueServerRenderer from 'vue-server-renderer' 它肯定对你有用

    【讨论】:

    • 我如何找出包正在导出哪些函数?我需要进入节点模块吗?
    • 不是真的你不需要这样做,因为如果你要查看它已经导出的快递包,那就是所有东西。类似 export.module = express;但是如果我们需要一个特定的函数,我们可以使用像import { Request, Response, NextFunction } from 'express'; 这样它完全取决于库,没有标准
    • 但为了安全起见,为我的所有包裹执行import * as 没有害处,对吧?
    • 老实说,我会建议使用模块导入,例如 `import { Request, Response, NextFunction } from 'express';`,因为它可以减少导入并且代码变得更简洁
    猜你喜欢
    • 2019-12-26
    • 2022-11-13
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多