Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vue-server-renderer can't be compiled server-side with webpack 4 #10318

Open
bgraceful opened this issue Jul 26, 2019 · 2 comments
Open

vue-server-renderer can't be compiled server-side with webpack 4 #10318

bgraceful opened this issue Jul 26, 2019 · 2 comments

Comments

@bgraceful
Copy link

bgraceful commented Jul 26, 2019

What problem does this feature solve?

Webpack or likely any other bundler/compiler/sequencer is not going to be able to resolve dynamic require statements:

Example Added in comments (and at fiddle)

https://jsfiddle.net/te1b83jx/5/

Hence the webpack warning:

node_modules/vue-server-renderer/build.dev.js 9295:15-9298:9
Critical dependency: the request of a dependency is an expression

https://github.com/vuejs/vue/blob/dev/packages/vue-server-renderer/build.dev.js#L9295

Using:

const renderer = eval("require")('vue-server-renderer').createRenderer()

And including "vue-server-renderer" in the node_modules as I would imagine most people do, avoids this inconvenience, however IMO it's really nice to be able to compile system level javascript to a few javascript files (one for each process more or less... etc.)

What does the proposed API look like?

Well if the module evaluation could be done in a way that doesn't necessitate a dynamic require statements, that would be really cool. : )

@bgraceful
Copy link
Author

Example.tar.gz

@Tofandel
Copy link

Tofandel commented Apr 27, 2020

Adding to this that when importing it, if you have

        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
                'VUE_ENV': '"server"'
            }
        })
    ]

In your webpack config, it will throw an error about left hand side assignment because vue server renderer is defining the process.env at runtime
In build.dev.js

process.env.VUE_ENV = 'server';

Which gets compiled to "server" = 'server';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants