x***@qq.com
x***@qq.com
  • 发布:2022-05-07 21:09
  • 更新:2022-05-17 13:57
  • 阅读:1009

钉钉小程序 Vue3 使用sjs报错

分类:uni小程序sdk
<script module="move" lang="sjs" src="../common/sjs/move.sjs"/> 

以上语句加入vue文件报错

[plugin:vite:vue] Single file component can contain only one <script> element

2022-05-07 21:09 负责人:无 分享
已邀请:
x***@qq.com

x***@qq.com (作者)

function uniRenderjsPlugin() {  
    let resolvedConfig;  
    let changed = false;  
    return {  
        name: 'uni:app-vue-renderjs',  
        configResolved(config) {  
            resolvedConfig = config;  
            wxsModulesCache.set(resolvedConfig, new Map());  
            renderjsModulesCache.set(resolvedConfig, new Map());  
        },  
        async transform(code, id) {  
            const { type, name, filename } = (0, uni_cli_shared_1.parseRenderjs)(id);  
            if (!type) {  
                return;  
            }  
            if (type !== 'wxs' && type !== 'renderjs') {  
                return;  
            }

看了@dcloudio\uni-app-vite\dist\vue\plugins\renderjs.js的源代码,现在只支持wxs和renderjs,官方也没人来确认下吗?文档上你们的sjs例子到底能用么?

x***@qq.com

x***@qq.com (作者)

真是求人不如求己,在以下文件(node_modules\@dcloudio\uni-cli-shared\dist\vue\parse.js)修改

const WXS_LANG_RE = /lang=["|'](renderjs|wxs)["|']/;  
const WXS_ATTRS = ['wxs',  'renderjs'];

TO

const WXS_LANG_RE = /lang=["|'](renderjs|wxs|sjs)["|']/;  
const WXS_ATTRS = ['wxs', 'sjs', 'renderjs'];

成功解决,再说一句,论坛就是摆设

x***@qq.com

x***@qq.com (作者)

还发现个问题不知道是我环境的问题还是初始化脚本有问题,用vscode开发,我发现node_modules\@dcloudio 下面有的子包会包含自己的node_modules 里面的模块会和node_modules\@dcloudio 下的重复,一重复就会造成子包使用的是他自己的依赖模块,导致子包没被正确初始化,需要删掉子包里的node_modules目录。HBuilderX下面就不会有这个重复问题。

该问题目前已经被锁定, 无法添加新回复