使用 Docker 构建我的 Vue.js 应用程序时,npm install 失败

时间:2021-05-12 18:53:06

标签: node.js docker npm npm-install

Dockerfile

FROM node:latest as builder

WORKDIR /app

# Copy and install node modules
COPY package*.json ./
RUN npm install

# Copy and build for production
COPY . /app/
RUN npm run build --prod

# Configure NGINX
FROM nginx:1.17.3-alpine
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
WORKDIR /usr/share/nginx/html
COPY --from=builder /app/dist/ .

# Copy entrypoint script as /entrypoint.sh
COPY ./docker/entrypoint.sh /entrypoint.sh

EXPOSE 80

# Grant Linux permissions and run entrypoint script
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

# Start NGINX
CMD ["nginx", "-g", "daemon off;"]

这是到达 Dockerfile 中的 npm install 行后的输出。

 npm ERR! ../src/libsass/src/cencode.c: In function 'base64_encode_block':
 npm ERR! ../src/libsass/src/cencode.c:48:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
 npm ERR!     result = (fragment & 0x003) << 4;
 npm ERR!     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
 npm ERR! ../src/libsass/src/cencode.c:52:2: note: here
 npm ERR!   case step_B:
 npm ERR!   ^~~~
 npm ERR! ../src/libsass/src/cencode.c:62:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
 npm ERR!     result = (fragment & 0x00f) << 2;
 npm ERR!     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
 npm ERR! ../src/libsass/src/cencode.c:66:2: note: here
 npm ERR!   case step_C:
 npm ERR!   ^~~~
 npm ERR! ../src/libsass/src/functions.cpp: In function 'void Sass::Functions::handle_utf8_error(const Sass::ParserState&, Sass::Backtraces)':
 npm ERR! ../src/libsass/src/functions.cpp:110:20: warning: catching polymorphic type 'class utf8::invalid_code_point' by value [-Wcatch-value=]
 npm ERR!        catch (utf8::invalid_code_point) {
 npm ERR!                     ^~~~~~~~~~~~~~~~~~
 npm ERR! ../src/libsass/src/functions.cpp:114:20: warning: catching polymorphic type 'class utf8::not_enough_room' by value [-Wcatch-value=]
 npm ERR!        catch (utf8::not_enough_room) {
 npm ERR!                     ^~~~~~~~~~~~~~~
 npm ERR! ../src/libsass/src/functions.cpp:118:20: warning: catching polymorphic type 'class utf8::invalid_utf8' by value [-Wcatch-value=]
 npm ERR!        catch (utf8::invalid_utf8) {
 npm ERR!                     ^~~~~~~~~~~~
 npm ERR! ../src/libsass/src/json.cpp: In function 'char* json_encode_string(const char*)':
 npm ERR! ../src/libsass/src/json.cpp:405:15: warning: catching polymorphic type 'class std::exception' by value [-Wcatch-value=]
 npm ERR!    catch (std::exception) {
 npm ERR!                ^~~~~~~~~
 npm ERR! ../src/libsass/src/json.cpp: In function 'char* json_stringify(const JsonNode*, const char*)':
 npm ERR! ../src/libsass/src/json.cpp:424:15: warning: catching polymorphic type 'class std::exception' by value [-Wcatch-value=]
 npm ERR!    catch (std::exception) {
 npm ERR!                ^~~~~~~~~
 npm ERR! In file included from /root/.node-gyp/16.1.0/include/node/v8.h:30,
 npm ERR!                  from /root/.node-gyp/16.1.0/include/node/node.h:63,
 npm ERR!                  from ../../nan/nan.h:56,
 npm ERR!                  from ../src/binding.cpp:1:
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h: In function 'void v8::internal::PerformCastCheck(T*)':
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:38: error: 'remove_cv_t' is not a member of 'std'
 npm ERR!              !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
 npm ERR!                                       ^~~~~~~~~~~
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:38: note: suggested alternative: 'remove_cv'
 npm ERR!              !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
 npm ERR!                                       ^~~~~~~~~~~
 npm ERR!                                       remove_cv
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:38: error: 'remove_cv_t' is not a member of 'std'
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:38: note: suggested alternative: 'remove_cv'
 npm ERR!              !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
 npm ERR!                                       ^~~~~~~~~~~
 npm ERR!                                       remove_cv
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:50: error: template argument 2 is invalid
 npm ERR!              !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
 npm ERR!                                                   ^
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:63: error: '::Perform' has not been declared
 npm ERR!              !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
 npm ERR!                                                                ^~~~~~~
 npm ERR! /root/.node-gyp/16.1.0/include/node/v8-internal.h:452:63: note: suggested alternative: 'herror'
 npm ERR!              !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
 npm ERR!                                                                ^~~~~~~
 npm ERR!                                                                herror
 npm ERR! ../src/binding.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE render(Nan::NAN_METHOD_ARGS_TYPE)':
 npm ERR! ../src/binding.cpp:284:98: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [
nction-type]
 npm ERR!      int status = uv_queue_work(uv_default_loop(), &ctx_w->request, compile_it, (uv_after_work_cb)MakeCallback);
 npm ERR!                                                                                                   ^~~~~~~~~~~~
 npm ERR! ../src/binding.cpp: In function 'Nan::NAN_METHOD_RETURN_TYPE render_file(Nan::NAN_METHOD_ARGS_TYPE)':
 npm ERR! ../src/binding.cpp:320:98: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [
nction-type]
 npm ERR!      int status = uv_queue_work(uv_default_loop(), &ctx_w->request, compile_it, (uv_after_work_cb)MakeCallback);
 npm ERR!                                                                                                   ^~~~~~~~~~~~
 npm ERR! In file included from ../../nan/nan.h:56,
 npm ERR!                  from ../src/binding.cpp:1:
 npm ERR! ../src/binding.cpp: At global scope:
 npm ERR! /root/.node-gyp/16.1.0/include/node/node.h:806:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Objec
'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
 npm ERR!        (node::addon_register_func) (regfunc),                          \
 npm ERR!                                            ^
 npm ERR! /root/.node-gyp/16.1.0/include/node/node.h:840:3: note: in expansion of macro 'NODE_MODULE_X'
 npm ERR!    NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
 npm ERR!    ^~~~~~~~~~~~~
 npm ERR! ../src/binding.cpp:358:1: note: in expansion of macro 'NODE_MODULE'
 npm ERR!  NODE_MODULE(binding, RegisterModule);
 npm ERR!  ^~~~~~~~~~~
 npm ERR! make: *** [binding.target.mk:133: Release/obj.target/binding/src/binding.o] Error 1
 npm ERR! gyp ERR! build error
 npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
 npm ERR! gyp ERR! stack     at ChildProcess.onExit (/app/node_modules/node-gyp/lib/build.js:262:23)
 npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
 npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
 npm ERR! gyp ERR! System Linux 5.10.25-linuxkit
 npm ERR! gyp ERR! command "/usr/local/bin/node" "/app/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
 npm ERR! gyp ERR! cwd /app/node_modules/node-sass
 npm ERR! gyp ERR! node -v v16.1.0
 npm ERR! gyp ERR! node-gyp -v v3.8.0
 npm ERR! gyp ERR! not ok
 npm ERR! Build failed with error code: 1

 npm ERR! A complete log of this run can be found in:
 npm ERR!     /root/.npm/_logs/2021-05-12T18_13_32_395Z-debug.log

Package.json

{
  "name": "titan",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve --port 8080",
    "dev": "npm run serve --no-progress",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "test:unit": "vue-cli-service test:unit"
  },
  "dependencies": {
    "@azure/msal-browser": "^2.5.1",
    "azure-maps-control": "^2.0.23",
    "chart.js": "^2.9.3",
    "chartist": "0.11.0",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-standard": "^4.0.1",
    "i18n": "^0.8.5",
    "jspdf": "^1.5.3",
    "moment": "^2.26.0",
    "moment-timezone": "^0.5.32",
    "msal": "^1.3.3",
    "node-sass": "^4.14.1",
    "npm": "^7.12.1",
    "papaparse": "^5.2.0",
    "pdfmake": "^0.1.65",
    "sass-loader": "^7.3.1",
    "usps-webtools": "^1.0.3",
    "v-money": "^0.8.1",
    "vue": "^2.6.11",
    "vue-chartist": "^2.1.2",
    "vue-chartjs": "^3.5.0",
    "vue-meta": "^1.5.2",
    "vue-the-mask": "^0.11.1",
    "vuetify": "^2.3.1"
  },
  "devDependencies": {
    "@mdi/font": "4.5.95",
    "@vue/cli-plugin-babel": "^3.12.1",
    "@vue/cli-plugin-eslint": "^3.12.1",
    "@vue/cli-plugin-unit-jest": "^4.2.3",
    "@vue/cli-service": "^4.2.3",
    "@vue/eslint-config-standard": "^3.0.1",
    "@vue/test-utils": "1.0.0-beta.29",
    "axios": "^0.19.2",
    "eslint": "^5.16.0",
    "eslint-config-vuetify": "^0.5.0",
    "eslint-plugin-node": "^11.0.0",
    "jest-junit": "^10.0.0",
    "material-design-icons-iconfont": "^3.0.3",
    "stylus": "^0.54.7",
    "stylus-loader": "^3.0.1",
    "vue-analytics": "^5.22.1",
    "vue-i18n": "^7.4.0",
    "vue-router": "^3.1.6",
    "vue-template-compiler": "^2.6.11",
    "vuex": "^3.1.2",
    "vuex-router-sync": "^5.0.0"
  },
  "jest": {
    "preset": "@vue/cli-plugin-unit-jest",
    "collectCoverage": true,
    "reporters": [
      "default",
      "jest-junit"
    ],
    "coverageReporters": [
      "cobertura",
      "html"
    ]
  },
  "jest-junit": {
    "suiteName": "jest tests",
    "output": "test/junit.xml",
    "classNameTemplate": "{classname} - {title}",
    "titleTemplate": "{classname} - {title}",
    "ancestorSeparator": " > ",
    "usePathForSuiteName": "true"
  }
}

我已经尝试过的事情:

  1. 更新 npm
  2. 删除 node_modules 文件夹并删除 package-lock.json 文件并再次运行 npm install。
  3. 将 docker 重置为出厂默认设置

老实说,我什至不知道错误意味着什么,而且我不知道从哪里开始。最奇怪的是,这只发生在我工作的电脑上。我的家用 PC 具有相同的项目,可以很好地构建映像,没有错误。任何人都对如何解决这个问题有任何想法?谢谢。

更新: 更改 Dockerfile 中的第一行以使用来自节点的 14.10.0 版本修复了该问题: FROM node:14.10.0 as builder

0 个答案:

没有答案