【发布时间】:2018-10-16 14:17:23
【问题描述】:
我正在尝试将我的 Angular Universal 项目从 Angular v5 迁移到 v6
我有一项服务,我使用fs 在服务器端加载翻译。 Angular v5 一切正常。
使用 Angular v6,当我运行 npm run start aka ng serve --proxy-config proxy.conf.json 时,我遇到以下错误
错误 ./src/providers/core/translate/translate-universal-loader.service.ts 找不到模块:错误:无法解析“fs” '/Users/me/Documents/projects/myproject/src/providers/core/translate'
在我的服务中,我声明fs,如下所示:
declare var require: any;
const fs = require('fs');
我也尝试像下面这样声明它,但没有帮助
import * as fs from 'fs';
为了告诉 webpack 忽略 fs,我尝试在我的 webpack.server.config.js 中添加以下内容,但没有成功
node: {
fs: 'empty'
}
也尝试了 webpack 插件,也没有成功
new webpack.IgnorePlugin(/fs/)
但实际上它可能不是 ng serve 使用的配置,但我不知道我是否仍然可以使用 v6 弹出配置?
有人有想法吗?
更新
如果我将 fs 声明为any,它将解决ng serve 的问题,但不幸的是,在npm run build:ssr 并运行npm run serve 之后,它将无法在服务器端运行。在服务器端,我将面临以下错误
ERROR ReferenceError: fs is not defined
ps:我的项目遵循https://github.com/angular/universal-starter 结构、配置和依赖项
【问题讨论】:
-
尝试同时声明
fs,declare var fs: any; -
很酷,这是一个很好的解决方法,很有效,谢谢@JohnVelasquez - 我让你回答这个问题,然后将其标记为解决方案
-
在使用
fs时尝试设置此条件->if(typeof window !== 'undefined') -
那没用,问题出在服务器端,代码也只能在服务器端使用(isPlatformServer)
标签: angular webpack angular-universal angular6