Javascript PeerDependence未定义,尽管它存在于节点_模块中

Javascript PeerDependence未定义,尽管它存在于节点_模块中,javascript,npm,webpack,npm-install,npm-publish,Javascript,Npm,Webpack,Npm Install,Npm Publish,我正在学习建立一个NPM库。可以找到它的源代码。我将lodash作为peerDependency,这样应用程序(使用库)就可以自己安装它了 现在的问题是,当我在应用程序中安装库(@a6kme/math)时,我得到了一个错误未处理的拒绝(ReferenceError):在导入库时未定义lodash。我已经检查过了,lodash已经由应用程序通过其他库安装。(lodash存在于节点\u模块文件夹中) ==来自=== Mypackage.json { "name": "@a6kme/math",

我正在学习建立一个NPM库。可以找到它的源代码。我将
lodash
作为peerDependency,这样应用程序(使用库)就可以自己安装它了

现在的问题是,当我在应用程序中安装库(
@a6kme/math
)时,我得到了一个错误
未处理的拒绝(ReferenceError):在导入库时未定义lodash。我已经检查过了,lodash已经由应用程序通过其他库安装。(
lodash
存在于
节点\u模块
文件夹中)

==来自===

My
package.json

{
  "name": "@a6kme/math",
  "version": "1.0.5",
  "description": "",
  "main": "dist/math.js",
  "scripts": {
    "test": "jest",
    "build": "webpack --mode=production",
    "prepare": "npm run test",
    "posttest": "npm run build"
  },
  "files": [
    "/dist"
  ],
  "repository": {
    "type": "git",
    "url": "https://github.com/a6kme/math.git"
  },
  "keywords": [
    "webpack",
    "webpack-library",
    "bundling",
    "library"
  ],
  "author": "a6kme",
  "license": "MIT",
  "devDependencies": {
    "@babel/core": "^7.4.3",
    "@babel/preset-env": "^7.4.3",
    "babel-eslint": "^10.0.1",
    "babel-loader": "^8.0.5",
    "eslint": "^5.3.0",
    "eslint-config-prettier": "^4.1.0",
    "eslint-plugin-import": "^2.17.2",
    "eslint-plugin-prettier": "^3.0.1",
    "jest": "^24.7.1",
    "lodash": "^4.17.11",
    "prettier": "1.17.0",
    "webpack": "^4.30.0",
    "webpack-cli": "^3.3.0"
  },
  "peerDependencies": {
    "lodash": "*"
  }
}
我的
webpack.config.js

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'math.js',
    library: 'mathJs'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      }
    ]
  },
  externals: [/^lodash\/.+$/]
};
我的
.babelrc

{
  "presets": ["@babel/preset-env"]
}
我在代码库中创建了一个。
请告诉我去哪里看

错误在于我如何尝试构建我的库。未在
webpack.config.js
中设置libraryTarget。最初的配置是

output: {
  path: path.resolve(__dirname, 'dist'),
  filename: 'math.js',
  library: 'mathJs'
}
虽然它本该如此

output: {
  path: path.resolve(__dirname, 'dist'),
  filename: 'math.js',
  library: 'mathJs',
  libraryTarget: 'umd',
  globalObject: 'this'
}

libraryTarget:'umd'-这将在所有模块定义下公开您的库,允许它与CommonJS、AMD和作为全局变量一起工作


因为这是我最初的要求,所以我的库应该可以通过
es6导入
或作为浏览器中的
脚本
标记使用。

谢谢,伙计,这帮了大忙!