小程序
小游戏
企业微信
微信支付
扫描小程序码分享
在微信开发工具中,在项目代码中安装同声传译后,再通过 npm install lodash ,重新编译项目,启动模拟器,会出现下面的报错:
项目也没有正常启动;
在将lodash或者同声传译卸载或取消使用后,就没有了这个报错。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
找到了一个解决方法:在任何需要使用lodash的地方,提前引入下面这段代码:
global.Object = Object global.Array = Array // global.Buffer = Buffer global.DataView = DataView global.Date = Date global.Error = Error global.Float32Array = Float32Array global.Float64Array = Float64Array global.Function = Function global.Int8Array = Int8Array global.Int16Array = Int16Array global.Int32Array = Int32Array global.Map = Map global.Math = Math global.Promise = Promise global.RegExp = RegExp global.Set = Set global.String = String global.Symbol = Symbol global.TypeError = TypeError global.Uint8Array = Uint8Array global.Uint8ClampedArray = Uint8ClampedArray global.Uint16Array = Uint16Array global.Uint32Array = Uint32Array global.WeakMap = WeakMap global.clearTimeout = clearTimeout global.isFinite = isFinite global.parseInt = parseInt global.setTimeout = setTimeout
我是直接将lodash代码下载到本地js,然后将这段代码拼在了lodash的代码前面;
很神奇,想不通为什么。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
使用debounce的时候报错
Cannot read property 'now' of undefined
TypeError: Cannot read property 'now' of undefined
// 设置全局对象
if (typeof global !== 'undefined') {
global.Object = Object;
global.Array = Array;
global.DataView = DataView;
global.Date = Date;
global.Error = Error;
global.Float32Array = Float32Array;
global.Float64Array = Float64Array;
global.Function = Function;
global.Int8Array = Int8Array;
global.Int16Array = Int16Array;
global.Int32Array = Int32Array;
global.Map = Map;
global.Math = Math;
global.Promise = Promise;
global.RegExp = RegExp;
global.Set = Set;
global.String = String;
global.Symbol = Symbol;
global.TypeError = TypeError;
global.Uint8Array = Uint8Array;
global.Uint8ClampedArray = Uint8ClampedArray;
global.Uint16Array = Uint16Array;
global.Uint32Array = Uint32Array;
global.WeakMap = WeakMap;
global.clearTimeout = clearTimeout;
global.isFinite = isFinite;
global.parseInt = parseInt;
global.setTimeout = setTimeout;
}
// performance.now() polyfill
// lodash debounce 内部会使用 performance.now(),但微信小程序环境中可能不存在或缺少 now 方法
const performanceNow = function() {
return Date.now ? Date.now() : +(new Date());
};
// 确保 performance 对象存在且有 now 方法
if (!global.performance) {
global.performance = { now: performanceNow };
} else if (!global.performance.now) {
global.performance.now = performanceNow;
// 如果全局 performance 存在但没有 now 方法,添加它
if (typeof performance !== 'undefined') {
if (!performance.now) {
performance.now = performanceNow;
} else if (typeof global !== 'undefined' && global.performance) {
// 如果全局 performance 不存在,但 global.performance 存在,则创建全局 performance
try {
// 尝试在全局作用域创建 performance(小程序环境)
if (typeof globalThis !== 'undefined') {
globalThis.performance = global.performance;
} catch (e) {
// 忽略错误
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
找到了一个解决方法:在任何需要使用lodash的地方,提前引入下面这段代码:
global.Object = Object global.Array = Array // global.Buffer = Buffer global.DataView = DataView global.Date = Date global.Error = Error global.Float32Array = Float32Array global.Float64Array = Float64Array global.Function = Function global.Int8Array = Int8Array global.Int16Array = Int16Array global.Int32Array = Int32Array global.Map = Map global.Math = Math global.Promise = Promise global.RegExp = RegExp global.Set = Set global.String = String global.Symbol = Symbol global.TypeError = TypeError global.Uint8Array = Uint8Array global.Uint8ClampedArray = Uint8ClampedArray global.Uint16Array = Uint16Array global.Uint32Array = Uint32Array global.WeakMap = WeakMap global.clearTimeout = clearTimeout global.isFinite = isFinite global.parseInt = parseInt global.setTimeout = setTimeout我是直接将lodash代码下载到本地js,然后将这段代码拼在了lodash的代码前面;
很神奇,想不通为什么。
使用debounce的时候报错
Cannot read property 'now' of undefined
TypeError: Cannot read property 'now' of undefined
// 设置全局对象if (typeof global !== 'undefined') {global.Object = Object;global.Array = Array;global.DataView = DataView;global.Date = Date;global.Error = Error;global.Float32Array = Float32Array;global.Float64Array = Float64Array;global.Function = Function;global.Int8Array = Int8Array;global.Int16Array = Int16Array;global.Int32Array = Int32Array;global.Map = Map;global.Math = Math;global.Promise = Promise;global.RegExp = RegExp;global.Set = Set;global.String = String;global.Symbol = Symbol;global.TypeError = TypeError;global.Uint8Array = Uint8Array;global.Uint8ClampedArray = Uint8ClampedArray;global.Uint16Array = Uint16Array;global.Uint32Array = Uint32Array;global.WeakMap = WeakMap;global.clearTimeout = clearTimeout;global.isFinite = isFinite;global.parseInt = parseInt;global.setTimeout = setTimeout;}// performance.now() polyfill// lodash debounce 内部会使用 performance.now(),但微信小程序环境中可能不存在或缺少 now 方法const performanceNow = function() {return Date.now ? Date.now() : +(new Date());};// 确保 performance 对象存在且有 now 方法if (typeof global !== 'undefined') {if (!global.performance) {global.performance = { now: performanceNow };} else if (!global.performance.now) {global.performance.now = performanceNow;}}// 如果全局 performance 存在但没有 now 方法,添加它if (typeof performance !== 'undefined') {if (!performance.now) {performance.now = performanceNow;}} else if (typeof global !== 'undefined' && global.performance) {// 如果全局 performance 不存在,但 global.performance 存在,则创建全局 performancetry {// 尝试在全局作用域创建 performance(小程序环境)if (typeof globalThis !== 'undefined') {globalThis.performance = global.performance;}} catch (e) {// 忽略错误}}// 如果全局 performance 不存在,但 global.performance 存在,则创建全局 performance