Closed ly525 closed 4 years ago
您好,请教一个问题,我的场景略微有些特殊,容我描述一下:
本地有两个项目:kbone-template-vue(kbone提供的vue 小程序模板) 和 本地的 vue-cli3 生成的项目abc-repo(jsx 语法)
kbone-template-vue
abc-repo
我想让 vue-cli3 构建一个 library ,叫 abc-lib(本地构建为abc-lib.umd.js)
如果想在 kbone的项目(小程序)中通过 import abc from 'abc-lib的entry 的绝对路径的形式引入(一般为 main.js)', 在 home 页面中将其引入,并作为一个组件使用(引入本地路径的原因是,我想本地开发没有问题之后,再发布 npm 包)
import abc from 'abc-lib的entry 的绝对路径的形式引入(一般为 main.js)'
abc-lib-main.vue
home.vue
import AbcLib from '/Users/lambert/Documents/Code/abc-repo/src/abc-lib-main.vue
内容是可以正常渲染的,没有问题的,abc-lib-main.vue 内容如下:
<template> <div> render engine for app </div> </template> <script> export default { } </script>
abc-lib-main.js
import AbcLib from '/Users/lambert/Documents/Code/abc-repo/src/abc-lib-main.js
就会报错了,其中 abc-lib-main.js 内容如下
94% after seal ERROR Failed to compile with 1 errors 1:16:28 PM error in /Users/lambert/Documents/Code/abc-repo/src/abc-lib-main.js Syntax Error: SyntaxError: Unexpected token (9:11) 7 | }, 8 | render (h) { > 9 | return <div>render engine for app</div> | ^ 10 | } 11 | } 12 | @ ./node_modules/babel-loader/lib!./node_modules/thread-loader/dist/cjs.js!./node_modules/vue-loader/lib??vue-loader-options!./src/home/Index.vue?vue&type=script&lang=js& 39:0-109 48:12-18 @ ./src/home/Index.vue?vue&type=script&lang=js& @ ./src/home/Index.vue @ ./src/router/index.js @ ./src/main.js
为何采用 jsx 的写法,而不是vue 写法: 是因为 abc-lib 采用jsx 语法已经开发比较成熟了,改起来成本略高
我尝试了改了 webpack 的js的loader 对应的配置,但仍然无法生效,还想请作者指点一下,非常感谢。
我看 .babelrc 的配置中已经包含了 babel-plugin-transform-vue-jsx 了
{ "presets": [ ["env", { "modules": false, "targets": { "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] } }], "stage-2" ], "plugins": ["transform-vue-jsx", "transform-runtime"], "env": { "test": { "presets": ["env", "stage-2"], "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"] } } }
webpack.mp.config.js
// js { test: /\.js$/, use: [ 'thread-loader', { loader: 'babel-loader', options: { cacheDirectory: true, } } ], exclude: /node_modules/ },
你编成 web 项目的时候是否会报错呢?kbone 是不会对 js 文件里面的内容做什么处理的,只会在外面包一层 function,只要配置 loader 正确就可以(loader 配置和 web 端基本上是一样的)。
您好,请教一个问题,我的场景略微有些特殊,容我描述一下:
本地有两个项目:
kbone-template-vue
(kbone提供的vue 小程序模板) 和 本地的 vue-cli3 生成的项目abc-repo
(jsx 语法)我想让 vue-cli3 构建一个 library ,叫 abc-lib(本地构建为abc-lib.umd.js)
需求介绍
如果想在 kbone的项目(小程序)中通过
import abc from 'abc-lib的entry 的绝对路径的形式引入(一般为 main.js)'
, 在 home 页面中将其引入,并作为一个组件使用(引入本地路径的原因是,我想本地开发没有问题之后,再发布 npm 包)我的尝试
abc-lib-main.vue
, 在 jbone的模板项目中的home.vue
通过内容是可以正常渲染的,没有问题的,abc-lib-main.vue 内容如下:
abc-lib-main.vue
改为abc-lib-main.js
, 在 kbone的模板项目中的home.vue
通过就会报错了,其中
abc-lib-main.js
内容如下报错信息
为何采用 jsx 的写法,而不是vue 写法: 是因为 abc-lib 采用jsx 语法已经开发比较成熟了,改起来成本略高
我尝试了改了 webpack 的js的loader 对应的配置,但仍然无法生效,还想请作者指点一下,非常感谢。
我看 .babelrc 的配置中已经包含了 babel-plugin-transform-vue-jsx 了
webpack.mp.config.js