我正在尝试部署我的第一个有角度的应用程序,但是在执行部署过程中,在命令中间:
node node_modules/webpack/bin/webpack.js --mode=production --env.prod
(又名webpack --mode=production --config webpack.config.js --env.prod)
webpack --mode=production --config webpack.config.js --env.prod
我收到一个一般性错误,该错误不会为我提供以下信息:
Hash: 7b126cdcbdda85d6b0f304152e501136ec85ed58 Version: webpack 4.6.0 Child Hash: 7b126cdcbdda85d6b0f3 Time: 13298ms Built at: 2018-04-23 12:27:51 1 asset Entrypoint main-client = main-client.js ERROR in window is not defined Child Hash: 04152e501136ec85ed58 Time: 13281ms Built at: 2018-04-23 12:27:51 1 asset Entrypoint main-server = main-server.js ERROR in window is not defined
主服务器和主客户端都是webpack生成的文件,在我的代码中“窗口”的唯一用法是执行window.history.back()命令,但即使对其进行注释,仍然会出现错误。
window.history.back()
有人知道如何解决吗?
我的webpack版本是4.6.0 我的webpack.config.js内容如下: || ===> 更新 -不必要的webpack.config.js内容与问题本身无关
这可能是原因,因为您window直接在代码中的某处引用。这不是最佳实践!有时,(服务器端)未定义窗口对象并导致此问题。如果第三方库使用该库,则相同。
window
因此,请首先检查您的代码,找到直接在其中使用window的位置,然后将PLATFORMID包裹在该示例中:
import { PLATFORM_ID } from '@angular/core'; import { isPlatformBrowser, isPlatformServer } from '@angular/common'; constructor(@Inject(PLATFORM_ID) private platformId: Object) { ... } ngOnInit() { if (isPlatformBrowser(this.platformId)) { // Client only code. ... } if (isPlatformServer(this.platformId)) { // Server only code. ... } }
或者,如果找不到,则可能是库仍在使用它。在github上检查此问题,它将比我更好地解释问题:
https://github.com/webpack/react- starter/issues/37
希望这对您有帮助=)
PS:当我必须实现服务器端渲染时,同样的问题。我window在代码中使用了“ 随处可见”。从那一刻起,当我不得不使用它时,我总是会找到另一种方法来做同样的事情。
您也可以尝试将target: "web"webpack.config.js 放入其中
target: "web"
提出问题的人的编辑
另请参见github上的此问题,它提供了此问题的解决方案:https : //github.com/webpack/webpack/issues/7112