Javascript PeerDependence未定义,尽管它存在于节点_模块中
我正在学习建立一个NPM库。可以找到它的源代码。我将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",
lodash
作为peerDependency,这样应用程序(使用库)就可以自己安装它了
现在的问题是,当我在应用程序中安装库(@a6kme/math
)时,我得到了一个错误未处理的拒绝(ReferenceError):在导入库时未定义lodash。我已经检查过了,lodash已经由应用程序通过其他库安装。(lodash
存在于节点\u模块
文件夹中)
==来自===
Mypackage.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导入
或作为浏览器中的脚本
标记使用。谢谢,伙计,这帮了大忙!