Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

小程序插件开发无法编译运行 #4773

Closed
vdfor opened this issue Nov 6, 2019 · 8 comments
Closed

小程序插件开发无法编译运行 #4773

vdfor opened this issue Nov 6, 2019 · 8 comments
Assignees

Comments

@vdfor
Copy link
Contributor

vdfor commented Nov 6, 2019

问题描述
使用taro init 创建微信小程序插件项目后,运行 taro build --plugin weapp --watch报错

复现步骤
[复现问题的步骤]

  1. taro init taro-plugin-seed
  2. 选择wxplugin
  3. cd taro-plugin-seed
  4. taro build --plugin weapp --watch

期望行为
能够正常编译微信小程序插件项目

报错信息

开始编译微信小程序插件
生成  工具配置  miniprogram/project.config.json
编译  入口文件  src/app.tsx
拷贝  NPM文件   miniprogram/npm/@tarojs/taro/dist/index.js
拷贝  NPM文件   miniprogram/npm/@tarojs/taro/index.js
拷贝  NPM文件   miniprogram/npm/@tarojs/taro-weapp/dist/index.js
拷贝  NPM文件   miniprogram/npm/@tarojs/taro-weapp/index.js
生成  入口配置  miniprogram/app.json
生成  入口文件  miniprogram/app.js
生成  入口样式  miniprogram/app.wxss
编译  所有页面  
编译  页面文件  src/pages/index/index
引用  插件引用  使用了插件 plugin://myPlugin/avatar
生成  页面配置  miniprogram/pages/index/index.json
生成  页面逻辑  miniprogram/pages/index/index.js
生成  页面模板  miniprogram/pages/index/index.wxml
生成  页面样式  miniprogram/pages/index/index.wxss
编译  插件页面  
编译  页面文件  src/plugin/pages/list/list
编译  组件文件  src/plugin/components/listItem/listItem.tsx
生成  组件配置  miniprogram/miniprogram/plugin/components/listItem/listItem.json
生成  组件逻辑  miniprogram/miniprogram/plugin/components/listItem/listItem.js
生成  组件模板  miniprogram/miniprogram/plugin/components/listItem/listItem.wxml
生成  组件样式  miniprogram/miniprogram/plugin/components/listItem/listItem.wxss
生成  页面配置  miniprogram/plugin/pages/list/list.json
生成  页面逻辑  miniprogram/plugin/pages/list/list.js
生成  页面模板  miniprogram/plugin/pages/list/list.wxml
生成  页面样式  miniprogram/plugin/pages/list/list.wxss
编译  插件组件  
编译  组件文件  src/plugin/components/avatar/avatar.tsx
生成  组件配置  miniprogram/miniprogram/plugin/components/avatar/avatar.json
生成  组件逻辑  miniprogram/miniprogram/plugin/components/avatar/avatar.js
生成  组件模板  miniprogram/miniprogram/plugin/components/avatar/avatar.wxml
生成  组件样式  miniprogram/miniprogram/plugin/components/avatar/avatar.wxss
编译  插件 JS   
生成  依赖文件  miniprogram/plugin/index.js
(node:10593) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, link '/mnt/c/Users/vdfor/Item/Demo/taro-plugin-seed/miniprogram/plugin/' -> '/mnt/c/Users/vdfor/Item/Demo/taro-plugin-seed/plugin/'
(node:10593) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:10593) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

系统信息

  • 操作系统: win10 (wsl ubuntu 18.04)
  • Taro 版本 1.3.22
  • Node.js 版本 12.13.0
  • 报错平台 weapp

补充信息
另选择使用typescript时,src/plugin/plugin.json 中的 main 的值应为 index.ts,而非 index.js

@taro-bot
Copy link

taro-bot bot commented Nov 6, 2019

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

@Chen-jj Chen-jj self-assigned this Nov 6, 2019
@Chen-jj Chen-jj closed this as completed in f5b689d Nov 6, 2019
@Chen-jj
Copy link
Contributor

Chen-jj commented Nov 6, 2019

@vdfor 下个版本修复。src/plugin/plugin.json 中的 main 的值改为 index.ts。编译时自动处理为 .js。现在先手动改下编译后的吧。

@vdfor
Copy link
Contributor Author

vdfor commented Nov 12, 2019

@vdfor 下个版本修复。src/plugin/plugin.json 中的 main 的值改为 index.ts。编译时自动处理为 .js。现在先手动改下编译后的吧。

升级到1.3.23后,main值的问题是没问题的,但在linux(阿里云ubuntu18.04)/wsl(ubuntu 18.04)下仍存在报错。

在windows非wsl环境下,可以运行,但实时保存后报错 #4811

👽 Taro v1.3.23

开始编译微信小程序插件
生成  工具配置  miniprogram/project.config.json
编译  入口文件  src/app.tsx
拷贝  NPM文件   miniprogram/npm/@tarojs/taro/dist/index.js
拷贝  NPM文件   miniprogram/npm/@tarojs/taro/index.js
拷贝  NPM文件   miniprogram/npm/@tarojs/taro-weapp/dist/index.js
拷贝  NPM文件   miniprogram/npm/@tarojs/taro-weapp/index.js
生成  入口配置  miniprogram/app.json
生成  入口文件  miniprogram/app.js
生成  入口样式  miniprogram/app.wxss
编译  所有页面
编译  页面文件  src/pages/index/index
引用  插件引用  使用了插件 plugin://myPlugin/avatar
生成  页面配置  miniprogram/pages/index/index.json
生成  页面逻辑  miniprogram/pages/index/index.js
生成  页面模板  miniprogram/pages/index/index.wxml
生成  页面样式  miniprogram/pages/index/index.wxss
编译  插件页面
编译  页面文件  src/plugin/pages/list/list
编译  组件文件  src/plugin/components/listItem/listItem.tsx
生成  组件配置  miniprogram/miniprogram/plugin/components/listItem/listItem.json
生成  组件逻辑  miniprogram/miniprogram/plugin/components/listItem/listItem.js
生成  组件模板  miniprogram/miniprogram/plugin/components/listItem/listItem.wxml
生成  组件样式  miniprogram/miniprogram/plugin/components/listItem/listItem.wxss
生成  页面配置  miniprogram/plugin/pages/list/list.json
生成  页面逻辑  miniprogram/plugin/pages/list/list.js
生成  页面模板  miniprogram/plugin/pages/list/list.wxml
生成  页面样式  miniprogram/plugin/pages/list/list.wxss
编译  插件组件
编译  组件文件  src/plugin/components/avatar/avatar.tsx
生成  组件配置  miniprogram/miniprogram/plugin/components/avatar/avatar.json
生成  组件逻辑  miniprogram/miniprogram/plugin/components/avatar/avatar.js
生成  组件模板  miniprogram/miniprogram/plugin/components/avatar/avatar.wxml
生成  组件样式  miniprogram/miniprogram/plugin/components/avatar/avatar.wxss
编译  插件 JS
生成  依赖文件  miniprogram/plugin/index.js
(node:12540) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, link '/root/Item/taro-plugin-demo/miniprogram/plugin/' -> '/root/Item/taro-plugin-demo/plugin/'
(node:12540) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:12540) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@Aliveing
Copy link

Aliveing commented Dec 8, 2019

遇到了同样的情况,taro-cli的版本是 1.3.27,初步估计是fs.move改了,导致在运行 fs.move(fromPath, toPath) 的时候,如果 toPath 不存在就会报错,改用 fs.rename 可以解决。
具体方法如下:

# macos
cd "$(which taro)/../../dist/";  # 这是编译后的文件地址
# 源文件在"$(which taro)/../../src/plugin.ts" 374行,可不改,只是说下
vi plugin.js;

找到 yield fs.move(path.join(outputDir, PLUGIN_ROOT), pluginPath);
改为 yield fs.rename(path.join(outputDir, PLUGIN_ROOT), pluginPath);
保存。

@Garfield550
Copy link
Collaborator

遇到了同样的情况,taro-cli的版本是 1.3.27,初步估计是fs.move改了,导致在运行 fs.move(fromPath, toPath) 的时候,如果 toPath 不存在就会报错,改用 fs.rename 可以解决。
具体方法如下:

# macos
cd "$(which taro)/../../dist/";  # 这是编译后的文件地址
# 源文件在"$(which taro)/../../src/plugin.ts" 374行,可不改,只是说下
vi plugin.js;

找到 yield fs.move(path.join(outputDir, PLUGIN_ROOT), pluginPath);
改为 yield fs.rename(path.join(outputDir, PLUGIN_ROOT), pluginPath);
保存。

@Chen-jj 来看一下?

@Aliveing
Copy link

Aliveing commented Dec 9, 2019

又或许是node版本不同导致 fs.move 方法不同?没仔细研究过。
我本机node版本是10.16.3,不知道 @vdfor 的node 版本是多少。
Taro官方推荐node版本用多少的合适? @Garfield550

@vdfor
Copy link
Contributor Author

vdfor commented Dec 9, 2019

又或许是node版本不同导致 fs.move 方法不同?没仔细研究过。
我本机node版本是10.16.3,不知道 @vdfor 的node 版本是多少。
Taro官方推荐node版本用多少的合适? @Garfield550

我的是12.13.0

@Garfield550
Copy link
Collaborator

又或许是node版本不同导致 fs.move 方法不同?没仔细研究过。
我本机node版本是10.16.3,不知道 @vdfor 的node 版本是多少。
Taro官方推荐node版本用多少的合适? @Garfield550

官方没有明确的指明 Node 版本,只需要大于 8 即可,一般在开发中建议使用 LTS 版本。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants