- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在将 angular-cli 从 22.1 更新到 25.5(安装 angular-cli@latest)以及从 angular 2.2.3 更新到 2.3.1 之后,我遇到了这个问题:
ERROR in ./src/app/app.module.ts
Module build failed: TypeError: Cannot read property 'text' of undefined
at IdentifierObject.TokenOrIdentifierObject.getText (~/projects/MyProject/node_modules/typescript/lib/typescript.js:53644:56)
at ~/projects/MyProject/node_modules/@ngtools/webpack/src/loader.js:83:72
at Array.some (native)
at ~/projects/MyProject/node_modules/@ngtools/webpack/src/loader.js:83:32
at Array.filter (native)
at _removeModuleId (~/projects/MyProject/node_modules/@ngtools/webpack/src/loader.js:82:10)
at ~/projects/MyProject/node_modules/@ngtools/webpack/src/loader.js:167:48
@ ./src/main.ts 5:0-45
@ multi main
但我无法弄清楚问题出在哪里,main.ts
看起来很正常:
import './polyfills.ts';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/app.module';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule);
还有两个其他文件也因与上述完全相同的错误消息而失败,第一个 environment.ts
没有什么特别之处,第二个子模块因添加以下内容而失败:
@ ./src async
@ ./~/@angular/core/src/linker/system_js_ng_module_factory_loader.js
@ ./~/@angular/core/src/linker.js
@ ./~/@angular/core/src/core.js
@ ./~/@angular/core/index.js
@ ./src/main.ts
@ multi main
引用的 typescript.js:53644:56
如下所示:
[53643] TokenOrIdentifierObject.prototype.getText = function (sourceFile) {
[53644] return (sourceFile || this.getSourceFile()).text.substring(this.getStart(), this.getEnd());
[53645] };
和loader.js:83:72
& 83:32
指的是webpack,这段代码片段:
[078] exports.removeModuleIdOnlyForTesting = removeModuleIdOnlyForTesting;
[...] function _removeModuleId(refactor) {
[...] var sourceFile = refactor.sourceFile;
[...] refactor.findAstNodes(sourceFile, ts.SyntaxKind.ObjectLiteralExpression, true)
[...] .filter(function (node) {
[083] return node.properties.some(function (prop) { return prop.name.getText() == 'moduleId'; });
[...] })
[...] .forEach(function (node) {
[...] var moduleIdProp = node.properties.filter(function (prop, idx) {
[...] return prop.name.getText() == 'moduleId';
[...] })[0];
[...] // get the trailing comma
[...] var moduleIdCommaProp = moduleIdProp.parent.getChildAt(1).getChildren()[1];
[...] refactor.removeNodes(moduleIdProp, moduleIdCommaProp);
[...] });
[093] }
和loader.js:167:48
[148] // Super simple TS transpiler loader for testing / isolated usage. does not type check!
[...] function ngcLoader(source) {
[...] this.cacheable();
[...] var cb = this.async();
[...] var sourceFileName = this.resourcePath;
[...] var plugin = this._compilation._ngToolsWebpackPluginInstance;
[...] // We must verify that AotPlugin is an instance of the right class.
[...] if (plugin && plugin instanceof plugin_1.AotPlugin) {
[...] var refactor_2 = new refactor_1.TypeScriptFileRefactor(sourceFileName, plugin.compilerHost, plugin.program);
[...] Promise.resolve()
[...] .then(function () {
[...] if (!plugin.skipCodeGeneration) {
[...] return Promise.resolve()
[...] .then(function () { return _removeDecorators(refactor_2); })
[...] .then(function () { return _replaceBootstrap(plugin, refactor_2); });
[...] }
[...] else {
[...] return Promise.resolve()
[...] .then(function () { return _replaceResources(refactor_2); })
[167] .then(function () { return _removeModuleId(refactor_2); });
[...] }
[169] })
[...] ...
有没有人有同样的问题或者能弄清楚为什么 webpack(?) 会失败 - 或者可以向我解释编译器试图做什么以及为什么会失败?
angular-cli.json
:
{
"project": {
"version": "1.0.0-beta.25.5",
"name": "myproject"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"mobile": false,
"styles": [
"assets/css/main.css"
],
"scripts": [
"assets/lib/stomp.min.js"
],
"environments": {
"source": "environments/environment.ts",
"dev": "environments/environment.ts",
"live": "environments/environment.live.ts"
}
}
],
"addons": [],
"packages": [],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"prefixInterfaces": false,
"inline": {
"style": false,
"template": false
},
"spec": {
"class": false,
"component": true,
"directive": true,
"module": false,
"pipe": true,
"service": true
}
}
}
tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "",
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es6",
"dom"
],
"mapRoot": "./",
"module": "es6",
"moduleResolution": "node",
"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
},
"files": [
"typings/index.d.ts"
]
}
最佳答案
正如@stewdebaker 指出的那样:angular-cli: 1.0.0-beta.26 现已发布,似乎可以解决此问题。
正如@stewdebaker 提到的,有一个类似的问题 Build error in angular2 frontend using angular-cli - 解决方案是恢复到 angular-cli: 1.0.0-beta.21
。
另见 https://github.com/angular/angular-cli/issues/4072在 angular-cli
问题跟踪器中获取有关该问题的更多信息。
我无法修复我的项目,也无法恢复到我以前的 angular-cli
版本 1.0.0-beta.22-1
(我没有在 Stack Overflow 上看到其他问题,否则我可能会尝试恢复到 1.0.0-beta.21
)。
由于某些原因,在更新到 1.0.0-beta.25.5
之前,ng serve
命令可以正常工作,但在恢复到 1.0.0-beta.22 之后-1
它仍然会出现与更新后相同的错误。
所以我决定使用 angular-cli
创建一个新的 Angular2 项目,并使用 CLI 重建整个项目,同时从旧存储库复制代码并修复错误。
我遇到的错误是小问题(我认为它们是由于更新的 angular-cli
而改变 tslint.json
的结果)但没什么大不了的在项目中进行了更改,现在可以使用了。
错误信息中提到的源文件:
没有一点改变,但 angular-cli
再次可用,ng serve
现在运行时不会遇到错误。
我认为这不是理想的解决方案(也不是降级到 1.0.0-beta.21
)- 但这是我唯一能找到的。
关于angular-cli 25.5 模块构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665950/
我在全局范围内安装了最新的 angular-cli,并且我的项目正在成功构建。 在阅读另一个问题的建议解决方案时,(https://github.com/angular/angular-cli/iss
根据official docs关于 .angular-cli.json 配置文件,仅支持 main、test、polyfills 作为 webpack 入口文件。 如何通过定义 .angular-cl
我想在s3存储桶中搜索文件名abc.zip,并且有将近60个存储桶,每个存储桶都有2到3个级别的子目录或文件夹。我尝试使用AWS CLI命令执行搜索,以下是我尝试过的命令,但即使文件存在于存储桶中,也
我正在尝试在 C++/CLI 中查找赋值运算符和复制构造函数的示例。我在 Google 上花了很多时间,但令人惊讶的是我找不到一个看起来很常见的例子。 最佳答案 .NET 语义没有复制构造函数或赋值运
我需要获取另一个窗口的句柄。 这是它的代码: private: System::Void btn_find_Click(System::Object^ sender, System::EventAr
有点好奇实际上有多少人使用 C++/CLI?那么有多少人在使用它呢?人们是否只在托管环境下寻找程序员的特定工作?围绕 c++/cli 的社区有多大?从我目前看到的情况来看,有不少语法变化,作为 C++
我正在阅读一些 C++/CLI Material ,并且遇到了文字字段的概念: literal int inchesPerFoot = 12; 这是否比 const 更可取,因为 const FIEL
通过 npm install -g angular-cli@latest 安装 Angular CLI (angular-cli@1.0.0-beta.16) 失败,出现以下错误 npm-debug.
我正在尝试在我的 Ember CLI 应用程序中配置适配器以根据环境使用不同的主机。在开发中,我希望它是默认的当前主机(让我通过 --proxy 选项自定义它,但在生产中我知道它将是 http://s
我最近开始使用 Angular/CLI 工具,我在执行文件时遇到了一个问题,那就是我运行时 ng serve 那么这个命令可以帮助我们在源文件中进行任何更改时自动重新加载站点,但在我的系统中它没有发生
是否有推荐的方法通过 c++ cli 包装 native c++ 库? 最佳答案 不确定是否一种尺寸适合所有人,但是,是的,这很大程度上是一个机械过程。您的 ref 类包装器应该声明一个私有(priv
我有一个关于为要在 C# 中使用的 native C++ 类创建 C++ CLI 包装器的问题。 这是一个示例代码: #include "stdafx.h" #pragma once using na
下面的代码打印 0 和 3。这是代码生成错误吗?我在 .NET 4.0 下使用 Visual Studio 2012 Update 3 RC 运行它 #include "stdafx.h" using
它是如何工作的?它是否有不同的部分 - 有些方法是托管的,有些是非托管的,它是否将每个方法都转换为托管的,试图保持所有东西都处于托管状态并在必须时进行互操作调用? 最佳答案 三种不同的compiler
如果我没记错的话,函数必须是 CLR 世界中类的成员,而全局函数在 C++/CLI 中是可能的。这是否意味着这些全局函数是某种隐藏的“全局”类的一部分?如果是这样,出于反射目的,人们将如何获取其类型?
如何在 Angular 中重建我的项目。我首先使用 ng build 构建它,但无法再次执行该命令,因为它不会让我更改文件夹。 我收到此错误消息: EPERM:不允许操作,lstat 是否有另一个命令
我遇到了两个相互引用的类的问题。我曾尝试使用接口(interface)来解决问题,但遇到了其他问题,例如类重新定义。我只是不确定如何正确执行此操作。 这是我正在做的事情的一个例子。注意:我已经去掉了所
我是 React.js 的新手,我正在尝试从 tutorialspoint 上的教程中学习但我遇到了错误。这是我执行 npm start 命令时控制台上的错误: C:\Users\HP\Desktop
我正在尝试将我的 angular cli 和 angular core 从 12 升级到 13,但看起来存在对等依赖性问题。有人遇到过这个问题吗? npx @angular/cli@13 update
我正在我的 ubuntu 上安装 influxdb_2.0.9,我按照这里的说明操作: https://docs.influxdata.com/influxdb/v2.0/install/?t=Lin
我是一名优秀的程序员,十分优秀!