nodejs 字符串拼对象出现[object object] ,如何才能正常解析?

const MAIN_TEMPLATE = `
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import Home from '../views/Home.vue'
    Vue.use(VueRouter)
    const routes = [{
     path: '/', name: 'Home', component: Home,children:${router}
     },]
    const router = new VueRouter({
     mode: 'history', base: process.env.BASE_URL, routes})
    export default router
`
fs.writeFile(path,MAIN_TEMPLATE,err=>{})

上面代码执行后是下面带有 [object object]
image.png
children的数据是处理过的!想拼接后写入跟下面截图一样
router 是一个数组对象,
image.png

试过JSON.parse,JSON.stringify等 都是不行
请问有什么办法嘛~

阅读 4.2k
2 个回答

字符串拼接符的原理是String的concat的api。

  • 比如
let b = [{name:'b'}]
let a =  `name${b}`;
  • node本身不支持es6,经babel会编译为es5代码
var b = [{
  name: 'b'
}];
var a = "name".concat(b);
  • 当字符串与数组进行拼接时,会展示为[object object]形式。
  • 所以如果要想不展示为[object object] 应当将数组变量转为字符串
var b = `[{
  name: 'b'
}]`;
var a = "name".concat(b);
  • 此时结果为
name[{
    name: 'b'
}]

不知这样可不可以:

1.先把router用一个函数包起来

function getChildren () {
    return [{
        path: '/home/index',
        name: 'home'
        component: () => import('../view/home/index')
    }]
}

2.利用getChildren.toString()拿到函数定义文本

const str = getChildren.toString()

3.最后用正则提取数据和拼接字符串

const reg = /^function [a-zA-Z_$]+ {0,1}\(\) {0,1}{\s+return([^]+)}$/m
str.match(reg)
const router = RegExp.$1

// 接下来拼接router
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题