我将Angular
网站部署到了Firebase
,但收到错误消息
“未捕获的ReferenceError:未定义ngI18nClosureMode”
这是我在Firebase https://shopping-demo-cd112.firebaseapp.com/中的网站 任何朋友都会收到这样的错误? 谢谢您的帮助!
答案 0 :(得分:4)
将项目从Angle 7更新到8.2.1之后,我在项目中遇到了同样的问题。 这里的问题是CLI尚未更新,因为我仅更新了angular / core软件包。
请将您的angular-cli更新到8.2.1 ,然后再次构建生产版本,这样您的构建就可以正常运行了。
答案 1 :(得分:2)
尝试将Angular版本降级为“〜8.0.0”。当前存在一个未解决的问题,该问题与Angular在生产模式下构建的包中缺少变量有关。
您可能还希望将有关设置的详细信息发布到以下问题: https://github.com/angular/angular/issues/31595
其他解决方法是将缺少的变量注入包中,如果您可以降级到Angular 8.0.0,则在您的情况下可能没有必要
答案 2 :(得分:1)
就我而言,在运行ng build --prod
,然后使用firebase deploy --only hosting:project-name -m "some message"
在firebase中部署时出现了错误
我的开发环境在MacOS catalina V 10.15.2终端上运行
我指出了在本地项目文件夹中的 ng-packages 版本与系统中全局安装的版本不一致的原因,如下所述。
如果我做了ng --version
在root上,响应为:
Angular CLI: 8.3.21
Node: 10.14.1
OS: darwin x64
Angular:
...
Package Version
------------------------------------------------------
@angular-devkit/architect 0.803.21
@angular-devkit/core 8.3.21
@angular-devkit/schematics 8.3.21
@schematics/angular 8.3.21
@schematics/update 0.803.21
rxjs 6.4.0
但是在项目文件夹中对同一命令的响应是:
Angular CLI: 7.1.4
Node: 10.14.1
OS: darwin x64
Angular: 8.2.14
...
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.11.4
@angular-devkit/core 7.1.4
@angular-devkit/schematics 7.1.4
@schematics/angular 7.1.4
@schematics/update 0.11.4
rxjs 6.5.4
请注意@angular CLI版本和软件包有何不同。
我是如何解决的?
在项目文件夹中:
npm install --save-dev @angular/cli@latest
npm install
之后,您的项目包将被更新。
然后我运行生产版本:
ng build --prod
,最后使用firebase deploy --only hosting:project-name -m "some message"
部署到托管我的公用文件夹的已编译内容的Firebase,错误消失了。
答案 3 :(得分:0)
发生此问题是因为angular的依赖项不匹配。我建议使用以下软件包来更新它们:
https://www.npmjs.com/package/npm-check
使用以下方法安装:
npm install -g npm-check
然后,在项目的根目录下,运行以下命令以运行交互式升级:
npm-check -u
答案 4 :(得分:0)
在尝试了大多数答案之后,对我有所帮助的是在index.html的script-Tag中将ngI18ClosureMode = false声明为全局变量。我知道这不是最好的答案,但我需要尽快解决。 同样,只有当我将应用程序部署到云中,而无法在本地复制它时,这种情况才会发生
/* For minicart and cart */
$item->getProduct()->setName('Custom Name');
/* For checkout page cart items */
$item->setName('Custom Name');
$item->getProduct()->setIsSuperMode(true);