Skip to content

How to invoke a render function in a serverless way #3

Open
@acrodrig

Description

@acrodrig

Hi,

Thanks for the example, it has been very useful. Had a question about generating a render function in a server less manner.

I have a file with simple HTML, such as:

<html>
  <body>Hello</body>
</html>

Then I try to generate a render function via:

import { compile, VNode } from "vue";

const renderFunction = compile(fileContents);
const node: VNode = renderFunction({});

And it works! However I get these warnings:

[Vue warn]: resolveComponent can only be used in render() or setup().
[Vue warn]: resolveComponent can only be used in render() or setup().

Any idea of how to get rid of them?

Thanks a lot!

Activity

zhangzhuang15

zhangzhuang15 commented on Aug 23, 2023

@zhangzhuang15

This is caused by vue runtime, if we take a look at vue source code, you could read this:

function resolveAsset(...) {
  ...
  else if (__DEV__) {
    warn(
      `resolve${capitalize(type.slice(0, -1))} ` +
        `can only be used in render() or setup().`
    )
  }
}

when __DEV__ is true, you will get the warn, so you can change vue runtime to production mode, e.g. set process.env.NODE_ENV = "production"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      How to invoke a render function in a serverless way · Issue #3 · moduslabs/vue3-example-ssr