在 Angular 6 中尝试从我的库中导入模块时出现类型错误 [ERR_INVALID_ARG_VALUE]
TypeError [ERR_INVALID_ARG_VALUE] while trying to import module from my library in Angular 6
我正在尝试在应用程序中使用我创建的 Angular 6 库。我能够在 this guide 之后生成、配置和编译库,但我似乎无法在另一个 Angular 项目中使用它。我使用 npm pack
创建了一个本地包,并使用 .tgz
文件路径将其安装在 npm install
的 Angular 应用程序中。这里有一些信息:
图书馆的tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": ["node_modules/@types"],
"lib": ["es2017", "dom"],
"paths": {
"lib-components": ["dist/lib-components"],
"lib-components/*": ["dist/lib-components/*"]
}
}
}
public_api.ts
/*
* Public API Surface of lib-components
*/
export * from './lib/components/spinner/spinner.module';
消费者应用程序中的导入语句:
import { BootstrapSpinnerModule } from 'lib-components';
错误:
TypeError [ERR_INVALID_ARG_VALUE]: The argument 'path' must be a string or
Uint8Array without null bytes.
Received 'path_to_app_root/src/\u0000commonjsHelpers.js/package.json'
at readFile (fs.js:296:3)
...
版本:
"@angular/cli": "~6.2.9"
消费者和图书馆
"@angular/*": "6.1.0"
消费者和图书馆
我已经尝试了我在 Github 问题中找到的所有建议,但没有成功。
从头开始创建一个新库似乎已经解决了这个问题。一开始无法确定它无法正常工作的确切原因,但我采取了一些步骤,以防您将来遇到同样的问题:
- 确保你的
angular-cli
版本是你的主要版本的最新稳定版本(必须从 6.1.x 更新到 6.2.9),并记住你的本地 cli 版本覆盖了全局的,所以你可能必须更新两者(在问题中我说我使用的是最新的 cli 版本,但我生成了版本 6.1.x 的库,在一切都坏了之后我尝试更新cli。不要那样做。如果你更新你的 cli,生成一个新的库。
- 不知道这是不是一个问题,但我重命名了库以防我不小心使用了某种保留字(从
lib-components
到 my-company-components
)
我正在尝试在应用程序中使用我创建的 Angular 6 库。我能够在 this guide 之后生成、配置和编译库,但我似乎无法在另一个 Angular 项目中使用它。我使用 npm pack
创建了一个本地包,并使用 .tgz
文件路径将其安装在 npm install
的 Angular 应用程序中。这里有一些信息:
图书馆的tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": ["node_modules/@types"],
"lib": ["es2017", "dom"],
"paths": {
"lib-components": ["dist/lib-components"],
"lib-components/*": ["dist/lib-components/*"]
}
}
}
public_api.ts
/*
* Public API Surface of lib-components
*/
export * from './lib/components/spinner/spinner.module';
消费者应用程序中的导入语句:
import { BootstrapSpinnerModule } from 'lib-components';
错误:
TypeError [ERR_INVALID_ARG_VALUE]: The argument 'path' must be a string or
Uint8Array without null bytes.
Received 'path_to_app_root/src/\u0000commonjsHelpers.js/package.json'
at readFile (fs.js:296:3)
...
版本:
"@angular/cli": "~6.2.9"
消费者和图书馆
"@angular/*": "6.1.0"
消费者和图书馆
我已经尝试了我在 Github 问题中找到的所有建议,但没有成功。
从头开始创建一个新库似乎已经解决了这个问题。一开始无法确定它无法正常工作的确切原因,但我采取了一些步骤,以防您将来遇到同样的问题:
- 确保你的
angular-cli
版本是你的主要版本的最新稳定版本(必须从 6.1.x 更新到 6.2.9),并记住你的本地 cli 版本覆盖了全局的,所以你可能必须更新两者(在问题中我说我使用的是最新的 cli 版本,但我生成了版本 6.1.x 的库,在一切都坏了之后我尝试更新cli。不要那样做。如果你更新你的 cli,生成一个新的库。 - 不知道这是不是一个问题,但我重命名了库以防我不小心使用了某种保留字(从
lib-components
到my-company-components
)