复制步骤:
npm install @angular/cli
npx ng new my-app
(按Enter键显示默认提示)cd my-app
npx ng build
(注意,它起作用)npm install --save ethers
import { BigNumber } from 'ethers/utils'
添加到my-app/src/app/app.component.ts
foo = new BigNumber(0)
添加到AppComponent
中的my-app/src/app/app.component.ts
类中npx ng build
(注意失败)这里的问题是ethers
库的package.json
具有:
{
"main": "./index.js",
"browser": "./dist/ethers.min.js",
}
根据webpack documentation,webpack应该使用./dist/ethers.min.js
。但是,从错误中我们可以看到它正在尝试使用./index.js
,这是基于它试图读取属于NodeJS构建而不是浏览器构建(完全位于{ {1}}子目录。
为什么Angular不尊重dist
中的browser
字段?为了解决此问题,我需要做什么?
答案 0 :(得分:0)
问题是我正在以import { BigNumber } from 'ethers/utils'
的形式进行导入。这种导入方式会绕过main
上的browser
或package.json
属性,这意味着无论那里的版本是什么,我都在拉入节点版本。
该解决方案,从混合目标依赖项导入时,切勿使用import { ... } from '.../<something>'
。