Ошибка построения angular пожара с универсальным SSR - PullRequest
2 голосов
/ 02 апреля 2020

Версии:

узел: 12.12.0
angular cli: 8.3.23
angular / fire: ^ 5.4.2
firebase: ^ 7.13.1

Все отлично работает в режиме разработки. Ошибка появляется, когда я запускаю скрипт 'universal-ssr@0.0.0 serve: ssr', где 'universal-ssr' - это имя моего проекта. Я много чего перепробовал, но никто даже близко не подошел к решению проблемы.

Выполненный мной скрипт:

npm run staging

Проблема:

WARNING in ./node_modules/bytebuffer/dist/bytebuffer-node.js
Module not found: Error: Can''t resolve 'memcpy' in '/home/de-10/VS Code Workspace/oms-v3/node_modules/bytebuffer/dist'
.
.
.
/home/de-10/VS Code Workspace/oms-v3/dist/server/main.js:226508
        throw new Error("package.json does not exist at " + package_json_path);
        ^

Error: package.json does not exist at /home/de-10/VS Code Workspace/oms-v3/dist/package.json
    at Object../node_modules/grpc/node_modules/node-pre-gyp/lib/pre-binding.js.exports.find (/home/de-10/VS Code Workspace/oms-v3/dist/server/main.js:226508:15)
.
.
.
npm ERR! universal-ssr@0.0.0 staging: `npm run build:ssr-staging && npm run serve:ssr`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the universal-ssr@0.0.0 staging script.

package. json:

{
  "scripts": {
    "staging": "npm run build:ssr-staging && npm run serve:ssr",
    "build:ssr-staging": "npm run build:client-and-server-bundles-staging && npm run webpack:server",
    "serve:ssr": "node dist/server.js",
    "build:client-and-server-bundles-staging": "ng build --c=staging --build-optimizer=true --stats-json  && ng run universal-ssr:server --bundleDependencies all"
  }
}

Одним из обходных путей было удаление --bundleDependencies all или замена его на --bundleDependencies none, но это не работает для меня. Хотя он успешно собирается, но когда я перемещаю папку dist и выполняю node dist/server.js, появляется следующая ошибка:

internal/modules/cjs/loader.js:797
    throw err;
    ^

Error: Cannot find module '@angular/core'
Require stack:
- /home/de-10/Desktop/dist/server/main.js
- /home/de-10/Desktop/dist/server.js
.
.
.
at __webpack_require__ (/home/de-10/Desktop/dist/server/main.js:20:30) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/home/de-10/Desktop/dist/server/main.js',
    '/home/de-10/Desktop/dist/server.js'
  ]
}

Я также попытался установить grpc и @grpc/proto-loader, как кто-то предложил, но нет, это не работает.

Другим обходным решением было добавление набора пакетов в angular. json> architect.server.options:

"externalDependencies": [
   "grpc",
   "@grpc/proto-loader",
   "@angular/fire/firestore",
   "firebase/firestore"
]

Поэтому, когда я пытаюсь сделать что я получаю:

Свойство externalDependencies не допускается.

...