我认为Docker的配置存在问题,但我无法找到它。
我尝试按照我项目中的angular tutorial使用Angular Universal。我还使用了在其init函数中调用 window 的hammerjs。服务器端呈现不支持那种对象,因此导致:
})(window, document, 'Hammer');
window is not defined
感谢@cyrilletuzi为他的hotfix,我将import 'hammerjs'
从 app.module.ts 移到了 main.ts ,这很有效!到目前为止,在mac os上还可以。
但由于我的VPS在ubuntu上的内存限制,我必须使用Docker在本地构建我的项目。这是我的Dockerfile:
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install curl -y
WORKDIR /home
RUN curl -sL https://deb.nodesource.com/setup_8.x -o node.sh && chmod +x node.sh
RUN ./node.sh && apt-get install -y nodejs
RUN apt-get install -y build-essential
RUN chmod 755 $(which node)
RUN npm config set registry http://registry.npmjs.org/
RUN npm install -g @angular/cli@1.6.2 --unsafe-perm
COPY package.json /home
RUN rm -rf node_modules package-lock.json
RUN npm install
COPY . /home
RUN cd /home
RUN ng build --prod
RUN ng build --prod --app mpp-universal --output-hashing=none
RUN webpack --config webpack.server.config.js
这就是我的构建文件夹的样子:
- browser
- server
+ main.bundle.js
+ ...
- server.js
问题是,似乎我有关于缓存的问题。 导入'hammerjs'仍在我的docker ubuntu中的 server / main.bundle.js 中,但不再存在于我的mac上的同一文件中。
也许在docker中,构建没有采用 main.server.ts ,但 main.ts