Closed sufuwang closed 2 years ago
我测试vue2的项目,运行到小程序,一样报错:crypto.getRandomValues() not supported.
package.json 如下,这个项目现在就可以运行
{
"dependencies": {
"@dcloudio/uni-app-plus": "^2.0.0-26920200424005",
"@dcloudio/uni-cli-i18n": "^2.0.0-32920210927001",
"@dcloudio/uni-h5": "^2.0.0-26920200424005",
"@dcloudio/uni-helper-json": "*",
"@dcloudio/uni-i18n": "^2.0.0-32920210927001",
"@dcloudio/uni-mp-alipay": "^2.0.0-26920200424005",
"@dcloudio/uni-mp-baidu": "^2.0.0-26920200424005",
"@dcloudio/uni-mp-qq": "^2.0.0-26920200424005",
"@dcloudio/uni-mp-toutiao": "^2.0.0-26920200424005",
"@dcloudio/uni-mp-weixin": "^2.0.0-31920210709003",
"@dcloudio/uni-quickapp-light": "^2.0.0-26920200424005",
"@dcloudio/uni-quickapp-vue": "^2.0.0-26920200424005",
"@dcloudio/uni-stat": "^2.0.0-26920200424005",
"@dcloudio/uni-ui": "1.3.7",
"@vue/composition-api": "1.0.5",
"core-js": "^2.6.5",
"cos-wx-sdk-v5": "^1.0.11",
"es6-promisify": "^6.1.1",
"flyio": "^0.6.2",
"js-cookie": "^2.2.1",
"md5": "^2.2.1",
"minapp-api-promise": "^1.0.2",
"mockjs": "^1.1.0",
"node-sass": "^4.14.1",
"promisify": "0.0.3",
"regenerator-runtime": "^0.12.1",
"uni-composition-api": "^0.5.9",
"uni-ui": "1.0.0",
"vue": "^2.6.10",
"vuex": "^3.0.1"
},
"devDependencies": {
"@dcloudio/uni-cli-i18n": "^2.0.0-32920210927001",
"@dcloudio/uni-cli-shared": "^2.0.0-26920200424005",
"@dcloudio/uni-migration": "^2.0.0-26920200424005",
"@dcloudio/uni-template-compiler": "^2.0.0-26920200424005",
"@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.0-26920200424005",
"@dcloudio/vue-cli-plugin-uni": "^2.0.0-26920200424005",
"@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.0-26920200424005",
"@dcloudio/webpack-uni-mp-loader": "^2.0.0-26920200424005",
"@dcloudio/webpack-uni-pages-loader": "^2.0.0-26920200424005",
"@types/html5plus": "*",
"@types/uni-app": "*",
"@typescript-eslint/eslint-plugin": "^4.29.0",
"@typescript-eslint/parser": "^4.28.5",
"@vue/cli-plugin-babel": "^3.7.0",
"@vue/cli-plugin-eslint": "^4.5.15",
"@vue/cli-plugin-typescript": "^4.5.13",
"@vue/cli-plugin-unit-jest": "^4.5.13",
"@vue/cli-service": "^3.12.1",
"babel-plugin-import": "^1.11.0",
"cross-env": "^7.0.2",
"dayjs": "^1.8.35",
"eslint": "^7.28.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-vue": "^7.1.0",
"husky": "^4.3.8",
"less-loader": "^6.0.0",
"lint-staged": "^10.5.4",
"lodash": "^4.17.21",
"mini-types": "*",
"miniprogram-api-typings": "^2.8.0-2",
"postcss-comment": "^2.0.0",
"prettier": "^2.3.2",
"sass": "^1.36.0",
"sass-loader": "^8.0.2",
"typescript": "^4.3.4",
"uglifyjs-webpack-plugin": "^2.2.0",
"uuid": "^3.2.1",
"vue-eslint-parser": "^7.10.0",
"vue-template-compiler": "^2.6.10"
},
"browserslist": [
"Android >= 4",
"ios >= 8"
],
"uni-app": {
"scripts": {}
},
"husky": {
"hooks": {
"pre-commit": "lint-staged && npm run pre-push"
}
},
"lint-staged": {
"src/**/*.{js,ts,vue}": [
"npm run lint"
]
}
}
那你需要锁定下uuid的版本为:"^3.2.1" 我测试的高版本不行
那你需要锁定下uuid的版本为:"^3.2.1" 我测试的高版本不行
vite 打包中,即使锁定版本号,也无法打包成功,测试工程 :https://github.com/sufuWang/uniapp_vite 如果这一问题在 vite 项目中,无法解决,请问推荐使用什么 npm 包来代替 uuid ?
那你需要锁定下uuid的版本为:"^3.2.1" 我测试的高版本不行
vite 打包中,即使锁定版本号,也无法打包成功,测试工程 :https://github.com/sufuWang/uniapp_vite 如果这一问题在 vite 项目中,无法解决,请问推荐使用什么 npm 包来代替 uuid ?
小程序 生成uuid
好的
那你需要锁定下uuid的版本为:"^3.2.1" 我测试的高版本不行
vite 打包中,即使锁定版本号,也无法打包成功,测试工程 :https://github.com/sufuWang/uniapp_vite 如果这一问题在 vite 项目中,无法解决,请问推荐使用什么 npm 包来代替 uuid ?
- 报requireNativePlugin的bug会修复
- uuid 3.2.1 版本不支持es module,需要配置commonjs的转换
- 建议更换其他支持小程序的uuid库,可以自行搜索
小程序 生成uuid
大佬,还是有一些疑问,uuid 最新版本支持 es module 和 commonjs ,即使不支持,这个也不应该成为打包失败的主要原因,因为使用插件转换模块应该是打包工具的基础能力,想问一下小程序不支持 uuid 库的主要原因是什么呀
那你需要锁定下uuid的版本为:"^3.2.1" 我测试的高版本不行
vite 打包中,即使锁定版本号,也无法打包成功,测试工程 :https://github.com/sufuWang/uniapp_vite 如果这一问题在 vite 项目中,无法解决,请问推荐使用什么 npm 包来代替 uuid ?
- 报requireNativePlugin的bug会修复
- uuid 3.2.1 版本不支持es module,需要配置commonjs的转换
- 建议更换其他支持小程序的uuid库,可以自行搜索
小程序 生成uuid
大佬,还是有一些疑问,uuid 最新版本支持 es module 和 commonjs ,即使不支持,这个也不应该成为打包失败的主要原因,因为使用插件转换模块应该是打包工具的基础能力,想问一下小程序不支持 uuid 库的主要原因是什么呀
uuid使用了crypto的getRandomValues,小程序不支持,只有微信提供了wx.getRandomValues,而且还是异步方法
uuid@3.2.0
中使用 crypto.randomBytes
方法
uuid@8.3.2
中使用 crypto.randomFillSync
方法
// main.js
const crypto = require('crypto');
console.info('crypto: ', crypto);
上述代码,在 webpack 打包的项目中,是可以正常运行的,在 vite 打包的项目中报错,报错如下
Error: module "crypto.js" is not defined
是不是在 vite 项目中,不能使用 crypto.js
?
uuid@3.2.0
中使用crypto.randomBytes
方法uuid@8.3.2
中使用crypto.randomFillSync
方法// main.js const crypto = require('crypto'); console.info('crypto: ', crypto);
上述代码,在 webpack 打包的项目中,是可以正常运行的,在 vite 打包的项目中报错,报错如下
Error: module "crypto.js" is not defined
是不是在 vite 项目中,不能使用
crypto.js
?
不要使用require方式引入,全部使用es6 module 下个版本会兼容uuid@3.2.1
不要使用require方式引入,全部使用es6 module 下个版本会兼容uuid@3.2.1
好的
大佬,具体情况是这样的,原先使用 webpack 打包 vue2 项目,使用 uuid 库是不报错的,现在迁移到 vite 打包,报这个错误