H5W3
当前位置:H5W3 > 问答 > 正文

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]
nodejs 字符串拼对象出现[object object] ,如何才能正常解析?
children的数据是处理过的!想拼接后写入跟下面截图一样
router 是一个数组对象,
nodejs 字符串拼对象出现[object object] ,如何才能正常解析?

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

回答

字符串拼接符的原理是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

未经允许不得转载:H5W3 » nodejs 字符串拼对象出现[object object] ,如何才能正常解析?

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址