【发布时间】:2021-02-07 20:26:36
【问题描述】:
我正在尝试通过更新它们从 package.json 文件中提取的位置来本地测试 3 个节点模块。这些模块是sdk、ng-widget-lib 和frontend。 ng-widget-lib 取决于 sdk 和 frontend 取决于 ng-widget-lib。我使用babel 在本地构建sdk。我将 verdaccio 作为本地 npm 注册表运行。
我更新ng-widget/package.json(repo/根目录的名称是ng-widget而不是ng-widget-lib)将名称更改为@locals/ng-widget-lib并将sdk依赖项指向本地sdk目录。然后运行 npm install 并使用ng build 构建成功运行。然后我将dist/package.json 中的名称更改为@locals/ng-widget-lib 并发布到我的本地注册表。
在frontend/package.json 中,我将ng-widget-lib 依赖项指向@locals/ng-widget-lib(我尝试将其指向本地目录而不使用本地注册表,但这仍然不起作用)。我运行npm install,它将模块从我的本地注册表下载到node_modules/@locals/ng-widget-lib,并创建一个package-lock.json,ng-widget-lib 指向本地注册表。然后,当我运行 ng build --prod 或 ng build 时,它在我导入 @locals/ng-widget-lib 的文件中失败
错误 TS2307:找不到模块“@locals/ng-widget-lib”。
我已删除 node_modules 并运行 npm cache clean --force 但仍然出现同样的错误。 ng-widget-lib 和 frontend 使用 angular 8,sdk 是打字稿。我正在使用 npm 6.11.3
这是我的 tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
【问题讨论】:
标签: node.js angular typescript npm