所以这家公司给了我一个任务,让我构建一个简单的Vue应用程序。我从他们的回购中分叉代码,并试图运行npm install
。但它给了我几个错误,这是在这个日志文件。也这是我package.json
文件:
{
"name": "todo-app",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.1",
"core-js": "^3.6.5",
"vue": "^3.0.0",
"vue-router": "^4.0.0-0",
"vuex": "^4.0.0-0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-unit-jest": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0",
"@vue/test-utils": "^2.0.0-0",
"autoprefixer": "^9.8.6",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^7.0.0",
"jest-transform-stub": "^2.0.0",
"node-sass": "^4.12.0",
"postcss": "^7.0.36",
"sass-loader": "^8.0.2",
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.2.7",
"typescript": "~3.9.3",
"vue-jest": "^5.0.0-0"
}
}
如果有必要,这里有一些额外的信息:
npm
version:7.21.1
@vue/cli
版本:4.5.13
Node
版本:16.0.0
部分错误
5827 verbose stack Error: command failed
5827 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
5827 verbose stack at ChildProcess.emit (node:events:365:28)
5827 verbose stack at maybeClose (node:internal/child_process:1067:16)
5827 verbose stack at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
5828 verbose pkgid node-sass@4.5.3
5829 verbose cwd /home/yarkin/Documents/WEB/VueJS/todo-app
5830 verbose Linux 5.11.0-37-generic
5831 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--saveDev" "node-sass@4.5.3"
5832 verbose node v16.0.0
5833 verbose npm v7.21.1
5834 error code 1
5835 error path /home/yarkin/Documents/WEB/VueJS/todo-app/node_modules/node-sass
5836 error command failed
5837 error command sh -c node scripts/build.js
5838 error Building: /usr/local/bin/node /home/yarkin/Documents/WEB/VueJS/todo-app/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
这个问题是node-sass
特有的,在这个项目中,它似乎是唯一依赖于平台和Node版本的二进制依赖项。
有一个消息,锁文件版本是旧的,这意味着它是用另一个版本的NPM (v6)创建的,这可能是一个问题的来源,由于解决的依赖关系的差异。
如文档所示,不同的node-sass
版本链接到不同的Node版本,"node-sass": "^4.12.0"
建议项目应该在Node v12上运行,而使用的是v16。
可能的解决方案如下:
-
为这个项目切换到Node v12(对于其他项目来说可能太旧了)并按原样运行
-
切换到Node v14(最新的LTS版本,一般问题较少)并将
node-sass
更新到^4.14
-
继续使用Node v16并将
node-sass
更新为^6.0
-
继续使用Node v16,删除
node-sass
,取而代之的是添加与平台无关的sass
,如果出现问题(主要是/
语法),遵循Dart Sass的迁移指南