由于微信小程序中的 JavaScript 运行环境与浏览器有些许区别,因此在引用某些 npm lib 时会发生问题。这时候需要对源码做出一些改动。

小程序环境比较特殊,一些全局变量(如 window 对象)和构造器(如 Function 构造器)是无法使用的。

在小程序中直接 import lodash 会导致以下错误:

Uncaught TypeError: Cannot read property 'prototype' of undefined

解决方案:

  1. 安装独立的 lodash method package,如 lodash.get
yarn add lodash.get
import get from 'lodash.get'
  1. 修改 lodash 源码

找到:

var root = freeGlobal || freeSelf || Function('return this')();

替换为:

var root = {
  Array: Array,
  Date: Date,
  Error: Error,
  Function: Function,
  Math: Math,
  Object: Object,
  RegExp: RegExp,
  String: String,
  TypeError: TypeError,
  setTimeout: setTimeout,
  clearTimeout: clearTimeout,
  setInterval: setInterval,
  clearInterval: clearInterval
};
(adsbygoogle = window.adsbygoogle || []).push({});