我最近将 Angular 项目更新到版本 19,现在在构建或提供应用程序时遇到以下错误:
[ERROR] The package "crypto" wasn't found on the file system but is built into node. [plugin angular-browser-node-built-in]
node_modules/crypto-js/core.js:50:25:
50 │ crypto = require('crypto');
╵ ~~~~~~~~
我使用 crypto-js 库和 secure-web-storage 来处理浏览器中的加密本地存储。 以下是我在 StorageService 中导入和使用这些库的方法:
import sha256 from 'crypto-js/sha256';
import aes from 'crypto-js/aes';
import Utf8 from 'crypto-js/enc-utf8';
我添加了以下配置来尝试解决该问题:
1- angular.json:
"allowedCommonJsDependencies": [
"secure-web-storage",
"crypto-js",
"crypto"
]
2- tsconfig.json:
"paths": {
"crypto": ["./node_modules/crypto-js"]
}
我认为您收到错误是由于
crypto
添加到 paths
的 tsconfig.json
。
"paths": {
"crypto": ["./node_modules/crypto-js"]
}
默认情况下,Angular 将检查
crypto-js
包。
完成此更改后还要重新启动服务器。