我想在角度2中创建内置,我已经编写了 ng build --prod --aot
命令并获得了以下错误。
180823 ms: Mark-sweep 1338.1 (1437.6) -> 1338.1 (1437.6) MB, 1325.4 / 0.0 ms [allocation failure] [GC in old space requested].
182147 ms: Mark-sweep 1338.1 (1437.6) -> 1338.1 (1437.6) MB, 1323.7 / 0.0 ms [allocation failure] [GC in old space requested].
183495 ms: Mark-sweep 1338.1 (1437.6) -> 1344.6 (1418.6) MB, 1347.4 / 0.0 ms [last resort gc].
184844 ms: Mark-sweep 1344.6 (1418.6) -> 1351.3 (1418.6) MB, 1348.6 / 0.0 ms [last resort gc].
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x5ec47cfb51 <JS Object>
1: token(aka token) [0x5ec4704381 <undefined>:1724] [pc=0x3e2345467b26] (this=0x5ec4704381 <undefined>,type=0x5ec4704fb1 <String[4]: name>,value=0x3363e2ffb931 <String[62]: __WEBPACK_IMPORTED_MODULE_35__angular_material_button_button__>,is_comment=0x5ec4704381 <undefined>)
2: arguments adaptor frame: 2->3
3: read_word(aka read_word) [0x5ec4704381 <undefined>:~1957] [pc=0x3e23435a05fb]...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [@angular/cli]
2: 0x1096a4c [@angular/cli]
3: v8::Utils::ReportApiFailure(char const*, char const*) [@angular/cli]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [@angular/cli]
5: v8::internal::Factory::NewTransitionArray(int) [@angular/cli]
6: v8::internal::TransitionArray::Insert(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::SimpleTransitionFlag) [@angular/cli]
7: v8::internal::Map::ShareDescriptor(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::DescriptorArray>, v8::internal::Descriptor*) [@angular/cli]
8: v8::internal::Map::CopyAddDescriptor(v8::internal::Handle<v8::internal::Map>, v8::internal::Descriptor*, v8::internal::TransitionFlag) [@angular/cli]
9: v8::internal::Map::CopyWithField(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::FieldType>, v8::internal::PropertyAttributes, v8::internal::Representation, v8::internal::TransitionFlag) [@angular/cli]
10: v8::internal::Map::TransitionToDataProperty(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::Object::StoreFromKeyed) [@angular/cli]
11: v8::internal::LookupIterator::PrepareTransitionToDataProperty(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::Object::StoreFromKeyed) [@angular/cli]
12: v8::internal::StoreIC::LookupForWrite(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::Object::StoreFromKeyed) [@angular/cli]
13: v8::internal::StoreIC::UpdateCaches(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::Object::StoreFromKeyed) [@angular/cli]
14: v8::internal::StoreIC::Store(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::Object::StoreFromKeyed) [@angular/cli]
15: v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [@angular/cli]
16: 0x3e2341a092a7
Aborted (core dumped)
我还在项目中尝试了以下命令:
node --max-old-space-size=8192 node_modules/@angular/compiler-cli/src/main.js -p tsconfig-aot.json
并收到以下错误:
错误:ENOENT:没有这样的文件或目录,lstat'tsconfig-aot.json' 在错误(本机) 在Object.fs.lstatSync(fs.js:982:18) at Object.main(/root/Desktop/rc1-dev/client/node_modules/@angular/tsc-wrapped/src/main.js:20:16) 在main(/root/Desktop/rc1-dev/client/node_modules/@angular/compiler-cli/src/main.js:14:16) 在对象。 (/root/Desktop/rc1-dev/client/node_modules/@angular/compiler-cli/src/main.js:30:5) 在Module._compile(module.js:570:32) 在Object.Module._extensions..js(module.js:579:10) 在Module.load(module.js:487:32) 在tryModuleLoad(module.js:446:12) 在Function.Module._load(module.js:438:3) 编译失败
答案 0 :(得分:4)
尝试通过以下脚本在包json中运行构建脚本:
{{1}}
然后运行“npm run build-prod”。
答案 1 :(得分:2)
请勿使用angular-cli在制作中托管您的应用程序!
angular-cli developers do not recommend it as you can see here!
对于开发版本,您只需要1 GB内存,但生产版本非常耗费资源,可能需要2 GB以上的内存。
对于制作,您应该在具有超过2GB内存的PC中构建您的应用程序,并将/ dist文件夹传输到您的生产服务器。
对于您的生产服务器,您可以使用任何服务器。
如果您想坚持使用nodejs,我建议您使用saco在生产环境中托管您的单页Web应用程序。
答案 2 :(得分:1)
使用
ng build --prod --aot --no-sourcemap
(非常确定 - 很多和 --no-sourcemap是默认情况下)为生产而构建。Gzipping已从CLI本身中删除。你的网络服务器可以 为你处理gzipping或你可以管道gulp任务或 类似于在构建后压缩你的dist文件夹。
答案 3 :(得分:0)
对于package.json中基于Webpack的应用程序>脚本,相应地增加值max_old_space_size = 5048。
"webpack-dev-server": "node --max_old_space_size=5048 node_modules/webpack-dev-server/bin/webpack-dev-server.js",
"webpack": "node --max_old_space_size=5048 node_modules/webpack/bin/webpack.js"