I tried vue-router with vue-template-compiler. It failed with the following error. Not supported?
EvalError: Code generation from strings disallowed for this context in
with(this){return _c('div',{attrs:{"id":"container"}})}
...
...
const Vue = require("vue").default;
const hello = require("./hello.vue").default;
const VueRouter = require("vue-router").default;
Vue.use(VueRouter);
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }
const routes = [
{ path: '/', component: hello },
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
const router = new VueRouter({
routes // short for `routes: routes`
})
let dialog;
function getDialog(selection) {
if (dialog == null) {
document.body.innerHTML = `<dialog><div id="container"></div></dialog>`
dialog = document.querySelector("dialog");
hello.setSelection(selection)
var app4 = new Vue({
el: "#container",
components: { hello, Foo, Bar },
router
})
}
return dialog
}
...
...
It worked with chrome browser
Ah – so Vue must use eval
or similar, which the XD execution environment blocks. Is there a setting on the router that avoids using eval
?
thank you for your info.
I tried with webpack-simple and now it is working!
Another issue was a template tag in main.js for routing. If it is replaced for importing an actual .vue, it shows up.
const Foo = require("./foo.vue").default; // OK
const Bar = { template: '<h3>bar</h3>' } // NG
const routes = [
{ path: '/', component: hello },
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
Hmm.
I’m far from a Vue expert here. Can you explain a little what the difference between what Foo
is and Bar
is? Are they both resolving to an object of { template: '<html>' }
, or is there more to Foo
than Bar
?
Actually, it might help to see what foo.vue
looks like, if you have an example.
foo.vue shows up with “Foo” but Bar does not render ‘<h3>bar</h3>’
<template>
<div id="foo">
<h1>{{ msg }}</h1>
</div>
</template>
<script>
export default {
name: "foo",
data() {
return {
msg: "Foo"
};
}
};
</script>
<style/>
It has been working well on Windows 10 but it turns out it fails on Mac. I ported the ui-playground sample in Vue. Is XD configured with custom URL - plugin?
I could not select XD from Choose Application in the dialog
Hi @kwiksher, could you briefly explain why you don’t get anymore this annoying error? I have the same error with my React plugin. I am looking for a way to bypass it.
It was resolved with webpack. The code generation of vue router on runtime causes the error, so webpacking is a solution like generating a static site.
Howerver because of the custom URL issue on macOS, I stopped to use vue router to control the tabs. CSS tab navigation is the one I use in my plugin.
1 Like
@kwiksher But how did you managed it make it work exactly, what did you put inside the of webpack.config ? Is it devtool: ‘#eval-source-map’ ?
Or what actually have changed so you don’t get that error anymore?
yes, webpack-simple uses the eval-source-map.
1 Like