node 订阅
node(结点):网络连接的端点,或两条(或多条)线路的连接点。结点可以是处理器、控制器或工作站。结点随其功能不同而各不相同,它们可以通过链路互联在一起,在网络中用作控制点。 展开全文
node(结点):网络连接的端点,或两条(或多条)线路的连接点。结点可以是处理器、控制器或工作站。结点随其功能不同而各不相同,它们可以通过链路互联在一起,在网络中用作控制点。
信息
词    性
名词
中文名
结点
外文名
node
含    义
网络连接的端点
释    义
结;节;瘤;茎节
node基本信息
node 英音:[nəud]美音:[nod]名词 n.1. 结;节;瘤;茎节2. 中心点;交叉点3.波节
收起全文
精华内容
下载资源
问答
  • node
    千次阅读
    2022-02-08 09:29:06

    项目中常常遇到node-sass安装失败,动不动就是报各种错误。以前我一次也没有失败过,自从系统重装我的天呀,node-sass就没有成功过,我能做的node卸载,sass重装各种版,以及换了淘宝镜像和用了vpn都安装失败。我也是无语,今天没事特意搜搜了看,一次复制了别人的文章进行总结,可以尝试一下,应该是可以的。
    (这个是我在react项目中直接解决的 node-sass方法
    https://blog.csdn.net/lzfengquan/article/details/122729257?spm=1001.2014.3001.5501
    这个是我的解决react项目中node-sass博客地址.不过我觉得可能有更好的方案。)
    好了废话不多说哦,总有一款适合你。

    我遇到的问题一:
    npm install 时偶尔遇到报错:没有安装python或node-sass 安装失败的问题。

    百度之后发现是被墙了,但根据百度的方法换了淘宝镜像和用了vpn都安装失败,最后发现原来是因为没有卸载之前安装失败的包导致的。文中给出了两种报错问题,使用淘宝镜像或者使用yarn,找不到当前环境的绑定可以删除重跑。
    node-sass 安装失败的原因
    npm 安装 node-sass 依赖时,会从 github.com 上下载 .node 文件。由于国内网络环境的问题,这个下载时间可能会很长,甚至导致超时失败。
    这是使用 sass 的同学可能都会遇到的郁闷的问题。

    解决方案就是使用其他源,或者使用工具下载,然后将安装源指定到本地

    解决方法一:使用淘宝镜像源(推荐)

    设置变量 sass_binary_site,指向淘宝镜像地址。示例:
    执行命令

    npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
    
    // 也可以设置系统环境变量的方式。示例
    // linux、mac 下
    SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
    
    // window 下
    set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ && npm install node-sass
    

    或者设置全局镜像源:

    npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
    
    npm install node-sass
    

    之后再涉及到 node-sass 的安装时就会从淘宝镜像下载。

    解决方法二:使用 cnpm

    使用 cnpm 安装 node-sass 会默认从淘宝镜像源下载,也是一个办法:
    执行命令

    cnpm install node-sass
    

    解决方法三:创建.npmrc文件

    在项目根目录创建.npmrc文件,复制下面代码到该文件。

    phantomjs_cdnurl=http://cnpmjs.org/downloads
    sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
    registry=https://registry.npm.taobao.org
    

    保存后 删除之前安装失败的包(第一次安装请跳过此步) 执行命令

    npm uninstall node-sass
    

    重新安装

    	npm install node-sass
    

    解决方法四:下载 .node 到本地

    (在国内使用gulp编译sass时,需要安装gulp-sass,而gulp-sass依赖node-sass.
    node-sass安装需要.node文件,国内由于各种原因无法下载)
    方法 :
    1、使用命令行安装node-sass,提升安装失败:Cannot download
    在这里插入图片描述
    2、 尝试使用浏览器下载上面提到的地址。
    命令行下载方式与浏览器下载方式不同。浏览器可能可以正常下载
    3、下载完成后复制文件到指定目录(目录不要有空格、中文)。
    如复制到E盘根目录下
    在这里插入图片描述
    4、回到命令行安装界面。
    设置SASS_BINARY_PATH环境变量 set SASS_BINARY_PATH=E:/win32-x64-46_binding.node 文件名根据自己下载的文件自行修改
    然后再次安装,可以看到我们安装成功了
    在这里插入图片描述
    5、node-sass安装时,查看需要的.node文件是否存在。
    如果存在就不下载,如果不存在,需要下载。
    我们已经告诉node-sass文件已经下载下来了,就在E盘,你去哪里找,他一看确实有,直接使用不再下载。

    6、当然你可以直接这样做
    去根据版本号、系统环境,选择下载 .node 文件,然后安装时,指定变量 sass_binary_path

    npm i node-sass --sass_binary_path=/Users/lzwme/Downloads/darwin-x64-48_binding.node
    

    安装失败后重新安装问题
    之前安装失败,再安装就不去下载了,怎么办呢?那就先卸载再安装:

    npm uninstall node-sass
    npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
    

    问题:[npm install 报node-sass错误]

    npm WARN Error: EPERM: operation not permitted, scandir 'E:\zkh360\Zkh360.Web.Admin\app\node_modules\har-validator\node_modules'
    npm WARN { Error: EPERM: operation not permitted, scandir 'E:\zkh360\Zkh360.Web.Admin\app\node_modules\har-validator\node_modules'
    npm WARN stack: 'Error: EPERM: operation not permitted, scandir \'E:\\zkh360\\Zkh360.Web.Admin\\app\\node_modules\\har-validator\\node_modules\'',
    npm WARN errno: -4048,
    npm WARN code: 'EPERM',
    npm WARN syscall: 'scandir',
    npm WARN path: 'E:\\zkh360\\Zkh360.Web.Admin\\app\\node_modules\\har-validator\\node_modules' }
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! node-sass@3.13.1 postinstall: `node scripts/build.js`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the node-sass@3.13.1 postinstall script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    大致意思就是EPERM:不允许操作,scandir, node-sass@3.13.1 postinstall脚本失败。 这可能不是npm的问题。上面可能还有其他日志输出。
    

    问题:Node Sass找不到当前环境的绑定
    Node Sass could not find a binding for your current environment

    ERROR in Missing binding /Users/warren/Sites/random-docs/
    my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node
    Node Sass could not find a binding for your current environment: OS X 64-bit with Node 0.10.x
    

    解决方案。

    删除node_modules并运行npm install然后npm rebuild node-sass 什么都不做。
    

    stackoverflow原文

    如果这个 .node 还不能解决用这个方法。直接搞定。

    1 查看版本号

    node -p "[process.platform, process.arch, process.versions.modules].join('-')"
    

    在这里插入图片描述
    配置 变量 sass_binary_path:npm 命令或者yarn命令

     npm config set sass-binary-path e:/web/win32-x64-93_binding.node
     yarn config set sass-binary-path e:/web/win32-x64-93_binding.node
    

    解决方法五:使用梯子 来源

    假设你的梯子在你本地机器上开启了一个第三方服务器 127.0.0.1:8080,那么只需按照下面的方法配置一下就能正常安装 node-sass 了(如果你开启的是 PAC 模式而不是全局模式,那还需要将 s3.amazonaws.com 加入 PAC 列表):

    npm config set proxy http://127.0.0.1:8080
    npm i node-sass
    
    下载完成后删除 http 代理
    npm config delete proxy
    

    我遇到的问题二

    开始的时候引入别人的一个项目
    咱们一般都是执行命令
    npm install,或者 yarn命令会自动下载node-modules包
    npm run dev 或者要yarn start 启动项目
     但是往往就在安装包的时候就报错了,各种各样的,解决一个来一个,把管理员权限配置 了还不行,有的还说是版本的问题,改了package.json文件还不行。
    
    > node build/dev-server.js
    Listening at http://localhost:8888
    webpack: wait until bundle finished: /index.html
    webpack built 5301489d16ee90d86896 in 3165ms
    Hash: 5301489d16ee90d86896
    Version: webpack 1.15.0
    Time: 3165ms
     Asset     Size  Chunks       Chunk Names
    app.js  1.96 MB       0       app
    
    ERROR in Cannot find module 'node-sass'
     @ ./src/common/scss/index.scss 4:14-124 13:2-17:4 14:20-130
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-e0c3a2e6!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/App.vue 4:14-240 13:2-17:4 14:20-246 
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-690f3aee&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/ratings/ratings.vue 4:14-280 13:2-17:4 14:20-286
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-2ac60e2e&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/goods/goods.vue 4:14-278 13:2-17:4 14:20-284
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-17cac44c&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/seller/seller.vue 4:14-279 13:2-17:4 14:20-285
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-108aa294&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/split/split.vue 4:14-278 13:2-17:4 14:20-284
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-13f047fa&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/star/star.vue 4:14-277 13:2-17:4 14:20-283
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-bbdb154c&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/ratingselect/ratingselect.vue 4:14-285 13:2-17:4 14:20-291
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-652a5408&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/cartcontrol/cartcontrol.vue 4:14-284 13:2-17:4 14:20-290
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1728dbcc&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/header/header.vue 4:14-279 13:2-17:4 14:20-285
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-40efc97a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/shopcart/shopcart.vue 4:14-281 13:2-17:4 14:20-287
    ERROR in Cannot find module 'node-sass'
     @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-617e6f7a&scoped=true!./~/sass-loader!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/food/food.vue 4:14-277 13:2-17:4 14:20-283
    Child html-webpack-plugin for "index.html":
             Asset     Size  Chunks       Chunk Names
        index.html  1.47 MB       0
    webpack: Failed to compile.
    

    npm i node-sass -s安装
    报错信息

    E:\kibana>npm install node-sass 
    > node-sass@3.8.0 install E:\kibana\node_modules\node-sass
    > node scripts/install.js
    Cannot download "https://github.com/sass/node-sass/releases/download/v3.8.0/win3
    2-x64-48_binding.node":
    tunneling socket could not be established, cause=socket hang up
    Hint: If github.com is not accessible in your location
          try setting a proxy via HTTP_PROXY, e.g.
          export HTTP_PROXY=http://example.com:1234
    or configure npm proxy via
          npm config set proxy http://example.com:8080
    > node-sass@3.8.0 postinstall E:\kibana\node_modules\node-sass
    > node scripts/build.js
    Building: D:\Program Files\nodejs\node.exe E:\kibana\node_modules\node-gyp\bin\n
    ode-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags=
     --libsass_library=
    gyp info it worked if it ends with ok
    gyp verb cli [ 'D:\\Program Files\\nodejs\\node.exe',
    gyp verb cli   'E:\\kibana\\node_modules\\node-gyp\\bin\\node-gyp.js',
    gyp verb cli   'rebuild',
    gyp verb cli   '--verbose',
    gyp verb cli   '--libsass_ext=',
    gyp verb cli   '--libsass_cflags=',
    gyp verb cli   '--libsass_ldflags=',
    gyp verb cli   '--libsass_library=' ]
    gyp info using node-gyp@3.6.0
    gyp info using node@6.2.0 | win32 | x64
    gyp verb command rebuild []
    gyp verb command clean []
    gyp verb clean removing "build" directory
    gyp verb command configure []
    gyp verb check python checking for Python executable "python2" in the PATH
    gyp verb `which` failed Error: not found: python2
    gyp verb `which` failed     at getNotFoundError (E:\kibana\node_modules\which\wh
    ich.js:13:12)
    gyp verb `which` failed     at F (E:\kibana\node_modules\which\which.js:68:19)
    gyp verb `which` failed     at E (E:\kibana\node_modules\which\which.js:80:29)
    gyp verb `which` failed     at E:\kibana\node_modules\which\which.js:89:16
    gyp verb `which` failed     at E:\kibana\node_modules\isexe\index.js:42:5
    gyp verb `which` failed     at E:\kibana\node_modules\isexe\windows.js:36:5
    gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:117:15)
    gyp verb `which` failed  python2 { Error: not found: python2
    gyp verb `which` failed     at getNotFoundError (E:\kibana\node_modules\which\wh
    ich.js:13:12)
    gyp verb `which` failed     at F (E:\kibana\node_modules\which\which.js:68:19)
    gyp verb `which` failed     at E (E:\kibana\node_modules\which\which.js:80:29)
    gyp verb `which` failed     at E:\kibana\node_modules\which\which.js:89:16
    gyp verb `which` failed     at E:\kibana\node_modules\isexe\index.js:42:5
    gyp verb `which` failed     at E:\kibana\node_modules\isexe\windows.js:36:5
    gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:117:15) code: 'ENOENT
    ' }
    gyp verb check python checking for Python executable "python" in the PATH
    gyp verb `which` succeeded python C:\Python27\python.EXE
    gyp verb check python version `C:\Python27\python.EXE -c "import platform; print
    (platform.python_version());"` returned: "2.7.12\r\n"
    gyp verb get node dir no --target version specified, falling back to host node v
    ersion: 6.2.0
    gyp verb command install [ '6.2.0' ]
    gyp verb install input version string "6.2.0"
    gyp verb install installing version: 6.2.0
    gyp verb install --ensure was passed, so won't reinstall if already installed
    gyp verb install version is already installed, need to check "installVersion"
    gyp verb got "installVersion" 9
    gyp verb needs "installVersion" 9
    gyp verb install version is good
    gyp verb get node dir target node version installed: 6.2.0
    gyp verb build dir attempting to create "build" dir: E:\kibana\node_modules\node
    -sass\build
    gyp verb build dir "build" dir needed to be created? E:\kibana\node_modules\node
    -sass\build
    gyp verb Not using VS2017: Could not use PowerShell to find VS2017
    gyp verb build/config.gypi creating config file
    gyp verb build/config.gypi writing out config file: E:\kibana\node_modules\node-
    sass\build\config.gypi
    gyp verb config.gypi checking for gypi file: E:\kibana\node_modules\node-sass\co
    nfig.gypi
    gyp verb common.gypi checking for gypi file: E:\kibana\node_modules\node-sass\co
    mmon.gypi
    gyp verb gyp gyp format was not specified; forcing "msvs"
    gyp info spawn C:\Python27\python.EXE
    gyp info spawn args [ 'E:\\kibana\\node_modules\\node-gyp\\gyp\\gyp_main.py',
    gyp info spawn args   'binding.gyp',
    gyp info spawn args   '-f',
    gyp info spawn args   'msvs',
    gyp info spawn args   '-G',
    gyp info spawn args   'msvs_version=auto',
    gyp info spawn args   '-I',
    gyp info spawn args   'E:\\kibana\\node_modules\\node-sass\\build\\config.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   'E:\\kibana\\node_modules\\node-gyp\\addon.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   'C:\\Users\\15061857\\.node-gyp\\6.2.0\\include\\node\\com
    mon.gypi',
    gyp info spawn args   '-Dlibrary=shared_library',
    gyp info spawn args   '-Dvisibility=default',
    gyp info spawn args   '-Dnode_root_dir=C:\\Users\\15061857\\.node-gyp\\6.2.0',
    gyp info spawn args   '-Dnode_gyp_dir=E:\\kibana\\node_modules\\node-gyp',
    gyp info spawn args   '-Dnode_lib_file=node.lib',
    gyp info spawn args   '-Dmodule_root_dir=E:\\kibana\\node_modules\\node-sass',
    gyp info spawn args   '-Dnode_engine=v8',
    gyp info spawn args   '--depth=.',
    gyp info spawn args   '--no-parallel',
    gyp info spawn args   '--generator-output',
    gyp info spawn args   'E:\\kibana\\node_modules\\node-sass\\build',
    gyp info spawn args   '-Goutput_dir=.' ]
    gyp verb command build []
    gyp verb build type Release
    gyp verb architecture x64
    gyp verb node dev dir C:\Users\15061857\.node-gyp\6.2.0
    gyp verb found first Solution file build/binding.sln
    gyp verb could not find "msbuild.exe" in PATH - finding location in registry
    gyp verb "Release" dir needed to be created? null
    gyp verb copying "node.lib" for x64 C:\Users\15061857\.node-gyp\6.2.0\Release\no
    de.lib
    gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
    gyp info spawn args [ 'build/binding.sln',
    gyp info spawn args   '/nologo',
    gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
    Build started 2017/4/15 11:57:06.
    Project "E:\kibana\node_modules\node-sass\build\binding.sln" on node 1 (default
     targets).
    ValidateSolutionConfiguration:
      Building solution configuration "Release|x64".
    MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,
    1) 安装 .NET Fram
    ework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了
    其他位置,请将其位置添加到系统
    路径中。 [E:\kibana\node_modules\node-sass\build\binding.sln]
    Done Building Project "E:\kibana\node_modules\node-sass\build\binding.sln" (def
    ault targets) -- FAILED.
    Build FAILED.
    "E:\kibana\node_modules\node-sass\build\binding.sln" (default target) (1) ->
    (_src_\libsass target) ->
      MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题
    ,1) 安装 .NET Fr
    amework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到
    了其他位置,请将其位置添加到
    系统路径中。 [E:\kibana\node_modules\node-sass\build\binding.sln]
        0 Warning(s)
        1 Error(s)
    Time Elapsed 00:00:00.23
    gyp ERR! build error
    gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
    ` failed with exit code: 1
    gyp ERR! stack     at ChildProcess.onExit (E:\kibana\node_modules\node-gyp\lib\b
    uild.js:285:23)
    gyp ERR! stack     at emitTwo (events.js:106:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_proces
    s.js:204:12)
    gyp ERR! System Windows_NT 6.1.7601
    gyp ERR! command "D:\\Program Files\\nodejs\\node.exe" "E:\\kibana\\node_modules
    \\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_
    cflags=" "--libsass_ldflags=" "--libsass_library="
    gyp ERR! cwd E:\kibana\node_modules\node-sass
    gyp ERR! node -v v6.2.0
    gyp ERR! node-gyp -v v3.6.0
    gyp ERR! not ok
    Build failed
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ba
    bel-cli\node_modules\chokidar\node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
    1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
    )
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ch
    okidar\node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
    1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
    )
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\wa
    tchpack\node_modules\chokidar\node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
    1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
    )
    npm WARN grunt-angular-translate@0.3.0 requires a peer of grunt@~0.4.0 but none
    was installed.
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! node-sass@3.8.0 postinstall: `node scripts/build.js`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the node-sass@3.8.0 postinstall script 'node scripts/build.js
    '.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the node-sass package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     node scripts/build.js
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR!     npm bugs node-sass
    npm ERR! Or if that isn't available, you can get their info via:
    npm ERR!     npm owner ls node-sass
    npm ERR! There is likely additional logging output above.
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\15061857\AppData\Roaming\npm-cache\_logs\2017-04-15T03_57_
    07_545Z-debug.log
    

    看着这报错信息,看到有文件下载出现404,然后我又去找文件,结果搞hosts文件,我以为是python问题,然后重装各种版本python…

    花了3小时,试了网上无数种答案,没有可以解决的
    解决方案一(有可能你还是不会成功,因为我也试了,这种方法以前是可以的)
    将sass-loader和node-sass的版本号提高到最新版,目前的最新版如下(2019年7月12日)
    “sass-loader”: “^7.1.0”,
    “node-sass”: “^4.12.0”,

    如图所示,把package.json文件修改一下
    在这里插入图片描述
    然后再执行如下命令安装

    npm i sass-loader
    npm i node-sass
    

    2020-05-06更新
    这个问题出现的原因往往是 Node-sass 的版本问题,可能的一个原因是:因为版本太老所以会导致有的依赖项已经找不到了,公司有一个4年前的老项目就是这种问题,上面修改Node-sass的版本为4.12并不一定适合所有项目,可以多测试几个版本,如果上面的版本失败了可以试一试这个版本

    "node-sass": "^4.13.1",
    "sass-loader": "^4.1.1",
    

    2021-06-06更新
    Nodejs版本切换为13.6,这样才可以匹配上node sass的版本
    简单的方法是,先卸载nodejs,然后安装13.6版本的
    Nodejs13.6版本官网下载

    仍然失败怎么办?那就试试第二种解决方案
    发现: gyp ERR! build error 应该是没有安装什么

    解决办法二:
    主要是windows平台缺少编译环境,
    1、先运行:

     npm install -g node-gyp
    

    2、然后运行:

    npm install --global --production windows-build-tools 
    可以自动安装跨平台的编译器:gym注:第二句执行下载好msi文件卡着不动不安装 , 手动去对应的目录底下安装一下 在执行一遍。
    

    本以为万事大吉 一执行 npm install node-sass --save-dev 悲剧的事情上演了

    > node-sass@3.13.1 install E:\web_hwf\Vue\02app\node_modules\node-sass
    > node scripts/install.js
    Downloading binary from https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-64_binding.node
    Cannot download "https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-64_binding.node":
    HTTP error 404 Not Found
    Hint: If github.com is not accessible in your location
          try setting a proxy via HTTP_PROXY, e.g.
          export HTTP_PROXY=http://example.com:1234
    or configure npm proxy via
          npm config set proxy http://example.com:8080
    > node-sass@3.13.1 postinstall E:\web_hwf\Vue\02app\node_modules\node-sass
    > node scripts/build.js
    Building: E:\26_nodejs\node.exe E:\web_hwf\Vue\02app\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
    gyp info it worked if it ends with ok
    gyp verb cli [ 'E:\\26_nodejs\\node.exe',
    gyp verb cli   'E:\\web_hwf\\Vue\\02app\\node_modules\\node-gyp\\bin\\node-gyp.js',
    gyp verb cli   'rebuild',
    gyp verb cli   '--verbose',
    gyp verb cli   '--libsass_ext=',
    gyp verb cli   '--libsass_cflags=',
    gyp verb cli   '--libsass_ldflags=',
    gyp verb cli   '--libsass_library=' ]
    gyp info using node-gyp@3.6.2
    gyp info using node@10.1.0 | win32 | x64
    gyp verb command rebuild []
    gyp verb command clean []
    gyp verb clean removing "build" directory
    gyp verb command configure []
    gyp verb check python checking for Python executable "C:\Python27\python.exe" in the PATH
    gyp verb `which` succeeded C:\Python27\python.exe C:\Python27\python.exe
    gyp verb check python version `C:\Python27\python.exe -c "import platform; print(platform.python_version());"` returned: "2.7.14\r\n"
    gyp verb get node dir no --target version specified, falling back to host node version: 10.1.0
    gyp verb command install [ '10.1.0' ]
    gyp verb install input version string "10.1.0"
    gyp verb install installing version: 10.1.0
    gyp verb install --ensure was passed, so won't reinstall if already installed
    gyp verb install version is already installed, need to check "installVersion"
    gyp verb got "installVersion" 9
    gyp verb needs "installVersion" 9
    gyp verb install version is good
    gyp verb get node dir target node version installed: 10.1.0
    gyp verb build dir attempting to create "build" dir: E:\web_hwf\Vue\02app\node_modules\node-sass\build
    gyp verb build dir "build" dir needed to be created? E:\web_hwf\Vue\02app\node_modules\node-sass\build
    gyp verb build/config.gypi creating config file
    gyp verb build/config.gypi writing out config file: E:\web_hwf\Vue\02app\node_modules\node-sass\build\config.gypi
    gyp verb config.gypi checking for gypi file: E:\web_hwf\Vue\02app\node_modules\node-sass\config.gypi
    gyp verb common.gypi checking for gypi file: E:\web_hwf\Vue\02app\node_modules\node-sass\common.gypi
    gyp verb gyp gyp format was not specified; forcing "msvs"
    gyp info spawn C:\Python27\python.exe
    gyp info spawn args [ 'E:\\web_hwf\\Vue\\02app\\node_modules\\node-gyp\\gyp\\gyp_main.py',
    gyp info spawn args   'binding.gyp',
    gyp info spawn args   '-f',
    gyp info spawn args   'msvs',
    gyp info spawn args   '-G',
    gyp info spawn args   'msvs_version=2015',
    gyp info spawn args   '-I',
    gyp info spawn args   'E:\\web_hwf\\Vue\\02app\\node_modules\\node-sass\\build\\config.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   'E:\\web_hwf\\Vue\\02app\\node_modules\\node-gyp\\addon.gypi',
    gyp info spawn args   '-I',
    gyp info spawn args   'C:\\Users\\Administrator\\.node-gyp\\10.1.0\\include\\node\\common.gypi',
    gyp info spawn args   '-Dlibrary=shared_library',
    gyp info spawn args   '-Dvisibility=default',
    gyp info spawn args   '-Dnode_root_dir=C:\\Users\\Administrator\\.node-gyp\\10.1.0',
    gyp info spawn args   '-Dnode_gyp_dir=E:\\web_hwf\\Vue\\02app\\node_modules\\node-gyp',
    gyp info spawn args   '-Dnode_lib_file=C:\\Users\\Administrator\\.node-gyp\\10.1.0\\<(target_arch)\\node.lib',
    gyp info spawn args   '-Dmodule_root_dir=E:\\web_hwf\\Vue\\02app\\node_modules\\node-sass',
    gyp info spawn args   '-Dnode_engine=v8',
    gyp info spawn args   '--depth=.',
    gyp info spawn args   '--no-parallel',
    gyp info spawn args   '--generator-output',
    gyp info spawn args   'E:\\web_hwf\\Vue\\02app\\node_modules\\node-sass\\build',
    gyp info spawn args   '-Goutput_dir=.' ]
    gyp verb command build []
    gyp verb build type Release
    gyp verb architecture x64
    gyp verb node dev dir C:\Users\Administrator\.node-gyp\10.1.0
    gyp verb found first Solution file build/binding.sln
    gyp verb could not find "msbuild.exe" in PATH - finding location in registry
    gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
    gyp info spawn args [ 'build/binding.sln',
    gyp info spawn args   '/nologo',
    gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
    Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
    Build started 2018/6/6 15:52:53.
    Project "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.sln" on node 1 (default targets).
    ValidateSolutionConfiguration:
      Building solution configuration "Release|x64".
    Project "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.sln" (1) is building "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.vcxproj.metaproj" (2) on node 1 (default targets).
    Project "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.vcxproj.metaproj" (2) is building "E:\web_hwf\Vue\02app\node_modules\node-sass\build\src\libsass.vcxproj" (3) on node 1 (default targets).
    E:\web_hwf\Vue\02app\node_modules\node-sass\build\src\libsass.vcxproj(20,3): error MSB4019: The imported project "E:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
    Done Building Project "E:\web_hwf\Vue\02app\node_modules\node-sass\build\src\libsass.vcxproj" (default targets) -- FAILED.
    Done Building Project "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.vcxproj.metaproj" (default targets) -- FAILED.
    Done Building Project "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.sln" (default targets) -- FAILED.
    Build FAILED.
    "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.sln" (default target) (1) ->
    "E:\web_hwf\Vue\02app\node_modules\node-sass\build\binding.vcxproj.metaproj" (default target) (2) ->
    "E:\web_hwf\Vue\02app\node_modules\node-sass\build\src\libsass.vcxproj" (default target) (3) ->
      E:\web_hwf\Vue\02app\node_modules\node-sass\build\src\libsass.vcxproj(20,3): error MSB4019: The imported project "E:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
        0 Warning(s)
        1 Error(s)
    Time Elapsed 00:00:00.07
    gyp ERR! build error
    gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
    gyp ERR! stack     at ChildProcess.onExit (E:\web_hwf\Vue\02app\node_modules\node-gyp\lib\build.js:258:23)
    gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12)
    gyp ERR! System Windows_NT 6.1.7601
    gyp ERR! command "E:\\26_nodejs\\node.exe" "E:\\web_hwf\\Vue\\02app\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
    gyp ERR! cwd E:\web_hwf\Vue\02app\node_modules\node-sass
    gyp ERR! node -v v10.1.0
    gyp ERR! node-gyp -v v3.6.2
    gyp ERR! not ok
    Build failed with error code: 1
    npm WARN rollback Rolling back source-map@0.4.4 failed (this is probably harmless): EPERM: operation not permitted, lstat 'E:\web_hwf\Vue\02app\node_modules\scss-tokenizer\node_modules'
    npm WARN eslint-config-standard@6.2.1 requires a peer of eslint-plugin-promise@>=3.3.0 but none is installed. You must install peer dependencies yourself.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! node-sass@3.13.1 postinstall: `node scripts/build.js`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the node-sass@3.13.1 postinstall script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2018-06-06T07_52_55_703Z-debug.log
    

    解决办法:
    保存后 删除之前安装失败的包(第一次安装请跳过此步)

    npm uninstall node-sass
    

    重新安装

    npm install node-sass
    

    解决办法三,重新配置node-sass

    通常在各种方式都试过之后还是不行的时候,我们要考虑下是不是遗忘了哪个细节?

    缓存!

    没错,可能我们思路本来都是对的,但是实际在运行时并没有按照我们预期的去执行,缓存就是可能导致这种情况的因素之一。
    现在前端安装依赖大家常用的工具是npm和yarn
    而这两者都有各自的缓存机制,有时候,第一次安装node-sass失败后,可能这个包就已经被缓存了,导致我们后续再进行安装时,就不再会从远程服务器或者是代理去拉取了。这就导致了一个死循环,永远拉不到正确的文件。
    成因
    其实node-sass安装不成功的跟本原因大家基本都清楚,就是他在安装过程中,需要用到一个二进制文件:binding.node,但是坑爹的是,这个二进制文件在“外面”,也就是需要科学上网才能获取,这就导致了绝大部分的安装失败。
    除此之外,其实还有一些是因为通过设置各种代理之后,仍然不能获取到正确的binding.node文件,具体原因可能多种多样,但其实我们不需要关心这些问题,我们知道了问题的成因,那么直接从根源上解决问题即可。

    解决办法

    分析清除了成因之后,解决问题就相对容易多了。既然node-sass总是从缓存拉取,那么我们就在缓存那里,直接把正确的文件放在那里,这样在安装node-sass时,直接从缓存中拉倒了正确的binding.node文件,问题便得以解决。
    所以我们要做以下几件事情:

    1、检测当前环境中,node-sass要使用的binding.node对应的版本
    2、获取到对应版本的binding.node
    3、将获取到的binding.node放到缓存中

    操作步骤

    1、查看当前环境适用的binding.node

    node -p "[process.platform, process.arch, process.versions.modules].join('-')"
    

    在这里插入图片描述

    2、到这里下载对应版本的文件。链接地址: https://github.com/sass/node-sass/releases
    3、将下载好的文件放入缓存目录中

    yarn缓存目录:C:Users你的用户名-AppData下的文件夹Local下的文件夹Yarn下的文件夹Cache
    npm缓存目录:C:Users你的用户名-AppData下的文件夹Roaming下的文件夹npm-cache下的node-sass
    

    在这里插入图片描述

    注意
    node-sass最终安装正确的情况下,目录结构是这样的:

    node-sass|
        -...
        -vender|
            -win32-x64-93
                -binding.node
    

    所以为了保证正确安装,我们需要按照这个格式把下载到的文件放到缓存的目录下。
    这里,win32-x64-93在不同的环境下可能有不同的版本,要注意看一下你本地对应的是什么版本。
    查看版本上面给出了一个命令

    (node -p "[process.platform, process.arch, process.versions.modules].join('-')"),可以试一下。
    

    查看版本还有一种方式,就是当你第一次安装失败时,你去node-modules中去找node-sass目录,然后找到vender目录,进去就能看到你的环境下,building.node对应的版本了。

    我本地的目录结构如下,供参考:
    在这里插入图片描述
    在这里插入图片描述

    4、重新安装node-sass

    更多相关内容
  • Node-RED从入门到实战教程

    千人学习 2020-10-19 11:20:12
    Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只...
  • 多版本node的安装与切换详细操作

    千次阅读 多人点赞 2022-04-28 14:51:35
    安装多版本node的原因: 在项目开发过程中,不同项目使用的node版本不同,有时会因为node版本过高或太低,导致报错;如何在同一个系统中安装多个版本的node呢,那就是使用nvm进行管理 方法一:利用nvm进行管理 NVM ...

    安装多版本node的原因:

    在项目开发过程中,不同项目使用的node版本不同,有时会因为node版本过高或太低,导致报错;如何在同一个系统中安装多个版本的node呢,这里有两种方式,往下看选择适合你的方式吧

    方法一:利用nvm进行管理

    NVM 简介

    NVM 全称 Node Version Manager,是一个管理 NodeJS 版本的工具。
    NVM 默认只支持 Linux 和 OS X,不支持 Windows,针对 Windows 操作系统有 2 个替代方案:

    1. nvm-windows
    2. nodist
      这里只介绍使用nvm-windows安装和切换多版本NodeJS的方法。

    安装前须知:

    • 之前有node环境的需卸载干净
    • 如果安装完node后,输入 nvm use <版本号>,仍无效(node版本前面都没有选中的"*"),需重新安装
    • 安装路径上不要有中文字符或者空格,否则会出现错误

    在这里插入图片描述

    卸载已安装的nodeJS

    1. 点击开始菜单,找到nodejs的文件夹,点击箭头处,进行卸载(注意:进行此操作之前需结束使用nodejs的项目)
      在这里插入图片描述
    2. 检测系统中是否还存在nodejs
      (1) 在开始菜单中进行查看
      (2) 在cmd窗口中输入 node -v 进行查看

    nvm 的安装与使用

    1. nvm下载

    安装包下载地址: https://github.com/coreybutler/nvm-windows/releases
    注意:安装环境win10系统,64位
    注意:安装环境 win10系统,64

    1. nvm安装(注:最好不要装在C盘)
      (1)在指定的文件下新建两个文件夹,一个用来存放nvm的安装文件,另一个用来存放node的文件
      在这里插入图片描述
      (2)将下载好的安装包放入nvm文件夹中,解压,进行安装。
      注意:安装时选择开始新建的文件夹作为指定安装目录
      在这里插入图片描述
      (3)选择nvm安装路径,点击下一步
      在这里插入图片描述
      (4)选择nodejs路径
      在这里插入图片描述
      (5)点击 Install——>点击 Finish,安装完成。
      (6)确认是否安装成功
      打开CMD,输入命令 nvm命令,安装成功则如下显示
      在这里插入图片描述
      (7)到此nvm已经安装成功
      如果有安装淘宝镜像的需完成下载镜像的配置,没有可跳过
      打开nvm文件夹下的settings.txt文件,在最后添加以下代码(不改,下载node可能会报错)
      在这里插入图片描述
    arch: 64
    proxy:
    node_mirror: https://npm.taobao.org/mirrors/node/
    npm_mirror: https://npm.taobao.org/mirrors/npm/
    

    注:

    arch:Windows 操作系统位数
    proxy:代理,淘宝 NodeJS 镜像和 NPM 镜像

    在这里插入图片描述
    注:

    root:NVM 安装路径
    path:NodeJS 快捷方式路径

    node 的不同版本安装及切换

    1. NVM 安装成功后,win + r 输入cmd 新开cmd窗口,可以通过 nvm -v 命令查看所有可用的命令。
    C:\>nvm -v
    
    Running version 1.1.7.
    
    Usage:
    
      nvm arch                     : Show if node is running in 32 or 64 bit mode.
      nvm install <version> [arch] : The version can be a node.js version or "latest" for the latest stable version.
                                     Optionally specify whether to install the 32 or 64 bit version (defaults to system arch).
                                     Set [arch] to "all" to install 32 AND 64 bit versions.
                                     Add --insecure to the end of this command to bypass SSL validation of the remote download server.
      nvm list [available]         : List the node.js installations. Type "available" at the end to see what can be installed. Aliased as ls.
      nvm on                       : Enable node.js version management.
      nvm off                      : Disable node.js version management.
      nvm proxy [url]              : Set a proxy to use for downloads. Leave [url] blank to see the current proxy.
                                     Set [url] to "none" to remove the proxy.
      nvm node_mirror [url]        : Set the node mirror. Defaults to https://nodejs.org/dist/. Leave [url] blank to use default url.
      nvm npm_mirror [url]         : Set the npm mirror. Defaults to https://github.com/npm/cli/archive/. Leave [url] blank to default url.
      nvm uninstall <version>      : The version must be a specific version.
      nvm use [version] [arch]     : Switch to use the specified version. Optionally specify 32/64bit architecture.
                                     nvm use <arch> will continue using the selected version, but switch to 32/64 bit mode.
      nvm root [path]              : Set the directory where nvm should store different versions of node.js.
                                     If <path> is not set, the current root will be displayed.
      nvm version                  : Displays the current running version of nvm for Windows. Aliased as v.
    
    1. 使用 nvm install <版本号>命令安装指定版本的NodeJS
    C:\>nvm install v8.16.2
    Downloading node.js version 8.16.2 (64-bit)...
    Complete
    Downloading npm version 6.4.1... Complete
    Installing npm v6.4.1...
    
    Installation complete. If you want to use this version, type
    
    nvm use 8.16.2
    
    1. 安装成功后在 NVM 安装目录下出现一个 v8.16.2 文件夹,使用 nvm list 命令查看已安装 NodeJS 列表。
    C:\>nvm list
    
         8.16.2
    
    1. 再次使用 nvm install <版本号> 命令安装另一版本的 NodeJS
    C:\>nvm install v12.8.0
    Downloading node.js version 12.8.0 (64-bit)...
    Complete
    Creating C:\Dev\nvm\temp
    
    Downloading npm version 6.10.2... Complete
    Installing npm v6.10.2...
    
    Installation complete. If you want to use this version, type
    
    nvm use 12.8.0
    
    1. 使用nvm use <版本号> 切换需要使用的 NodeJS 版本,切换成功后可以使用 node -vnpm -v 命令查看是否切换成功。
    C:\>nvm use v8.16.2
    Now using node v8.16.2 (64-bit)
    
    C:\>node -v
    v8.16.2
    
    C:\>npm -v
    6.4.1
    

    这里需注意使用nvm use <版本号>时可能出现乱码的情况

    C:\>nvm use v8.16.2
    exit status 1: ��û���㹻��Ȩ��ִ�д˲�����
    

    不要慌张,不要生气,这时候用重新打开一个以管理员身份运行cmd窗口就不会出现乱码的情况,使用nvm use <版本号> 切换需要使用的 NodeJS 版本,使用nvm ls 查看所有安装的node版本,版本号前面带有*号的表示当前使用的NodeJS版本。

    C:\Windows\system32>nvm use v8.16.2
    Now using node v8.16.2 (64-bit)
    
    C:\Windows\system32>nvm ls
        12.8.0
      * 8.16.2 (Currently using 64-bit executable)
    
    1. 这里是一些常用命令汇总:
    nvm off                     // 禁用node.js版本管理(不卸载任何东西)
    nvm on                      // 启用node.js版本管理
    nvm install <version>       // 安装node.js的命名 version是版本号 例如:nvm install 8.12.0
    nvm uninstall <version>     // 卸载node.js是的命令,卸载指定版本的nodejs,当安装失败时卸载使用
    nvm ls                      // 显示所有安装的node.js版本
    nvm list available          // 显示可以安装的所有node.js的版本
    nvm use <version>           // 切换到使用指定的nodejs版本
    nvm v                       // 显示nvm版本
    nvm install stable          // 安装最新稳定版
    

    方法二:通过配置环境变量(切换node时只需更改文件夹名称)

    安装node及注意事项

    1. 同样,如果之前有安装过node,为了避免不必要的麻烦,将其先卸载掉

    注意:安装多个版本的node的时候一定要从低版本开始安装,如果你先安装高版本的话会出现许多问题,如果你已经安装啦,先卸载掉然后进行下面的步骤

    1. 在安装node之前,我先选择一个node安装目录,我要安装到D盘下,所以我在D盘中新建了一个NODE的目录,并且在里面创建了一个nodejs8的文件夹,因为我一会要在这个文件夹中安装8.16.2版本的node
      在这里插入图片描述
    2. 开始安装
      node版本可以去node中文网或者点击这里下载
      https://nodejs.org/
      打开下载好的node8.16.2的安装包,一直点击下一步,直到出现安装路径,将安装路径切换为我们上面新建的nodejs8文件夹路径:D:\tools\NODE\nodejs8,然后一路下一步,直到安装成功

    配置环境变量

    在开始搜索框搜环境变量,注意这里选择编辑系统环境变量—>高级—>环境变量
    在这里插入图片描述
    在这里插入图片描述
    在系统变量中点击新建,变量名:nodejs,变量值:D:\tools\NODE\nodejs(即上面存放node的文件夹,这里先去掉nodejs8后面的8)
    在这里插入图片描述
    在这里插入图片描述
    点击确定后再系统变量中找到path 变量,选中后点击编辑,然后点击新建,将上面新建系统变量的变量名以%变量名%的形式加入,点击确定

    在这里插入图片描述
    这时候还不行,最关键的一点是:我们需要将一开始建的文件夹nodejs8重命名为nodejs

    值得注意的是:这里将nodejs8重命名的一方面是为了与上面配置的环境变量中的变量名匹配(即使用此版本node),另一方面是为了更好的安装下一个版本(因为在安装完一个node版本之后如果文件名不修改的话,后面再安装其他版本的node时无论你安装到什么地方,都会把之前的那个覆盖掉)

    在这里插入图片描述

    检查并安装多版本

    1. 检查

    重名名之后,然后win+R—>cmd,在命令窗口输入node -v查看node 版本,出现版本号说明第一个node版本安装成功

    C:\>node -v
    v8.16.2
    
    1. 安装下一个版本
      由于上面已经将安装的node8.16.2版本的文件名重命名(防止覆盖),这时我们只需在同级目录下新建一个文件夹nodejs12,安装node12.8.0版本的node(方法同上面安装node8.16.2)
      在这里插入图片描述

    node版本切换

    重点来了,在安装了多个版本的node的之后,在我们需要切换版本的时候,只需要将对应版本的文件夹重命名为nodejs即可

    例如:我们先装了node8.16.2版本的(放在nodejs文件夹下)和node12.8.0版本的(放在nodejs12文件夹下),现在使用的node是8.16.2,那么要想切换至node12.8.0版本的node,只需更改文件名,将nodejs重命名为nodejs8,再将nodejs12重命名为nodejs即可,换句话说就是用哪个版本的node就将哪个版本的node文件夹重命名为nodejs
    在这里插入图片描述
    此时在打开命令行窗口,输入node -v检查node版本

    C:\>node -v
    v12.8.0
    

    小伙伴儿们你们习惯使用哪个种方式呢?两种方式你们都学废了吗!评论区一起讨论一下吧!

    展开全文
  • 2021了,真的不要再说 Node.js 是一门编程语言了

    万次阅读 多人点赞 2021-05-24 21:02:40
    Node.js 全栈基础 1. Node.js 光速入门 1.1 Node.js 概述 Node.js 是什么 Node.js 不是一门编程语言,它是一个执行 JavaScript 代码的工具。工具是指可以安装在计算机操作系统之上的软件。 为什么浏览器和 Node....

    Node.js 全栈基础

    1. Node.js 光速入门

    1.1 Node.js 概述

    1. Node.js 是什么

      Node.js 不是一门编程语言,它是一个执行 JavaScript 代码的工具。工具是指可以安装在计算机操作系统之上的软件。

    2. 为什么浏览器和 Node.js 都可以运行 JavaScript

      因为浏览器和 Node.js 都内置了 JavaScript V8 Engine。

      它可以将 JavaScript 代码编译为计算机能够识别的机器码。

    01.png
    3. 浏览器中运行的 JavaScript 和 Node.js 中运行的 JavaScript 有区别吗

    在内置了 JavaScript V8 Engine 以后实际上只能执行 ECMAScript,就是语言中的语法部分。

    浏览器为了能够让 JavaScript 操作浏览器窗口以及 HTML 文档,所以在 JavaScript V8 Engine 中添加了控制它们的 API, 就是 DOM 和 BOM. 所以 JavaScript 在浏览器中运行时是可以控制浏览器窗口对象和DOM文档对象的。

    和浏览器不同,在 Node.js 中是没有 DOM 和 BOM 的,所以在 Node.js 中不能执行和它们相关的代码,比如 window.alert() 或者 document.getElementById(). DOM 和 DOM 是浏览器环境中特有的。在 Node.js 中,作者向其中添加了很多系统级别的 API,比如对操作系统中的文件和文件夹进行操作。获取操作系统信息,比如系统内存总量是多少,系统临时目录在哪,对系统的进程进行操作等等。

    24.png

    JavaScript 运行在浏览器中控制的是浏览器窗口和 DOM 文档。

    JavaScript 运行在 Node.js 中控制的操作系统级别的内容。

    03.png

    1. 为什么浏览器中的 JavaScript 不能控制系统级别的 API ?

      浏览器是运行在用户的操作系统中的,如果能控控制系统级别的 API 就会存在安全问题。

      Node.js 是运行在远程的服务器中的,访问的是服务器系统 API,不存在这方面的安全问题。

    2. Node.js 能够做什么

      我们通常使用它来构建服务器端应用和创建前端工程化工具。

      JavaScript 运行在浏览器中我们就叫它客户端 JavaScript。

      JavaScript 运行在 Node.js 中我们就叫它服务器端 JavaScript。

    1.2 系统环境变量

    系统环境变量是指在操作系统级别上定义的变量,变量中存储了程序运行时所需要的参数。

    26.png

    比如在使用 webpack 构建前端应用时就使用到了系统环境变量,因为 webpack 需要根据系统环境变量判断当前为开发环境还是生产环境,根据环境决定如何构建应用。

    在开发环境的操作系统中定义 NODE_ENV 变量,值为 development,在生产环境的操作系统中定义 NODE_ENV 变量,值为 production。webpack 在运行时通过 process.env.NODE_ENV 获取变量的值,从而得出当前代码的运行环境是什么。

    环境变量 PATH:系统环境变量 PATH 中存储的都是应用程序路径。当要求系统运行某一个应用程序又没有告诉它程序的完整路径时,此时操作系统会先在当前文件夹中查找应用程序,如果查找不到就会去系统环境变量 PATH 中指定的路径中查找。

    25.png

    1.3 安装 Node.js

    33.png

    LTS:长期支持版 (稳定版) 可以运行在生产环境中。

    Current:最新版 (预览版) 不建议运行在生产环境中,因为可能有 BUG。

    查看 Node 版本:node -v

    查看 Npm 版本:npm -v

    1.4 解决安装异常

    1. 解决在运行 node 命令时提示 “不是内部或外部命令, 也不是可运行的程序或批处理文件”。

    27.png

    将 Node 应用程序目录添加到系统环境变量中, 然后重新启动命令行工具再次执行 node 命令.

    1. 解决在安装 Node 的过程中出现代码为 2502 和 2503 的错误。

    28.png

    29.png

    1. 通过管理员权限打开命令行工具
    2. 切换到 node 安装包所在的目录
    3. 通过 msiexec /package node-v10.15.0-x64.msi 运行 Node 应用程序安装包

    1.5 Node.js 初体验

    function sayHello (name) {
      console.log('Hello' + name)
    }
    sayHello('Node')
    

    在命令行工具中通过 node JavaScript 文件 的方式执行代码。

    1.6 全局对象

    console.log(window) // window is not defined
    

    在 Node.js 环境中是没有 window 的,所以 window 对象自然是未定义的。

    在 Node.js 环境中全局对象为 global,在 global 对象中会存在一些和 window 对象中名字相同且作用相同的方。

    global.console.log
    global.setInterval
    global.clearInterval
    global.setTimeout
    global.clearTimeout
    global.setImmediate
    

    在 Node.js 环境中声明的变量不会被添加到全局对象中,变量声明后只能在当前文件中使用。

    var message = "hello"
    console.log(global.message) // undefined
    

    2. 模块系统

    2.1 模块概述

    在 Node.js 环境中,默认就支持模块系统,该模块系统遵循 CommonJS 规范。

    一个 JavaScript 文件就是一个模块,在模块文件中定义的变量和函数默认只能在模块文件内部使用,如果需要在其他文件中使用,必须显式声明将其进行导出。

    05.png

    2.2 模块成员导出

    在每一个模块文件中,都会存在一个 module 对象,即模块对象。在模块对象中保存了和当前模块相关信息。

    在模块对象中有一个属性 exports,它的值是一个对象,模块内部需要被导出的成员都应该存储在到这个对象中。

    Module {
      exports: {}
    }
    
    // logger.js
    const url = "http://mylogger.io/log";
    
    function log (message) {
      console.log(message)
    }
    module.exports.endPoint = url
    module.exports.log = log
    

    2.3 模块成员导入

    在其他文件中通过 require 方法引入模块,require 方法的返回值就是对应模块的 module.exports 对象。

    在导入模块时,模块文件后缀 .js 可以省略,文件路径不可省略。

    require 方法属于同步导入模块,模块导入后可以立即使用。

    // app.js
    const logger = require("./logger")
    console.log(logger) // { endPoint: 'http://mylogger.io/log', log: [Function: log] }
    console.log(logger.endPoint) // http://mylogger.io/log
    logger.log('Hello Module')   // Hello Node
    

    通过 require 方法引入模块时会执行该模块中的代码。

    // logger.js
    console.log("running...")
    
    // app.js
    require("./logger") // running...
    

    在导入其他模块时,建议使用 const 关键字声明常量,防止模块被重置。

    var logger = require("./logger")
    logger = 1;
    logger.log("Hello") // logger.log is not a function
    
    const logger = require("./logger")
    logger = 1;  // Assignment to constant variable.
    logger.log("Hello")
    

    有时在一个模块中只会导出一个成员,为方便其他模块使用,可以采用以下导入方式。

    // logger.js
    module.exports = function (message) {
      console.log(message)
    }
    
    // app.js
    const logger = require("./logger")
    logger("Hello")
    

    2.4 Module Wrapper Function

    Node.js 是如何实现模块的,为什么在模块文件内部定义的变量在模块文件外部访问不到?

    每一个模块文件中都会有 module 对象和 require 方法,它们是从哪来的?

    在模块文件执行之前,模块文件中的代码会被包裹在模块包装函数当中,这样每个模块文件中的代码就都拥有了自己的作用域,所以在模块外部就不能访问模块内部的成员了。

    06.gif

    (function(exports, require, module, __filename, __dirname) {
      // entire module code lives here
    });
    

    从这个模块包装函数中可以看到,module 和 require 实际上模块内部成员, 不是全局对象 global 下面的属性。

    __filename:当前模块文件名称。

    __dirname:当前文件所在路径。

    exports:引用地址指向了 module.exports 对象,可以理解为是 module.exports 对象的简写形式。

    exports.endPoint = url;
    exports.log = log
    

    在导入模块时最终导入的是 module.exports 对象,所以在使用 exports 对象添加导出成员时不能修改引用地址。

    exports = log //这是错误的写法.
    

    2.5 Node.js 内置模块

    在 Node.js 安装完成后,会内置一些非常有用的模块。

    Path:模块内提供了一些和路径操作相关的方法。

    File system:文件操作系统,提供了和操作文件相关的方法。

    在引入内置模块时, 使用的是模块的名字,前面不需要加任何路径。

    2.5.1 Path 模块
    const path = require("path")
    console.log(path.parse(__filename))
    
    {
      root: '/',
      dir: '/Users/administrators/Desktop/node_test',
      base: 'app.js',
      ext: '.js',
      name: 'app'
    }
    
    2.5.2 File system 模块
    const fs = require("fs")
    
    const files = fs.readdirSync("./")
    console.log(files)  [ 'app.js', 'logger.js' ]
    
    fs.readdir("./", function (error, files) {
      console.log(error) // null | Error {}
      console.log(files) // [ 'app.js', 'logger.js' ] | undefined
    })
    

    3.NPM

    3.1 Node.js 软件包

    每一个基于 Node.js 平台开发的应用程序都是 Node.js 软件包。

    所有 Node.js 软件包都被托管在 www.npmjs.com 中。

    3.2 什么是 NPM

    Node Package Manager,Node.js 环境中的软件包管理器。随 Node.js 一起被安装。

    它可以将 Node 软件包添加到我们的应用程序中并对其进行管理,比如下载,删除,更新,查看版本等等。

    它没有用户界面,需要在命令行工具中通过命令的方式使用,对应的命令就是 npm。

    NPM 和 Node 是两个独立的应用程序,只是被捆绑安装了,可以通过版本号证明。

    3.3 package.json

    Node.js 规定在每一个软件包中都必须包含一个叫做 package.json 的文件。

    它是应用程序的描述文件,包含和应用程序相关的信息,比如应用名称,应用版本,应用作者等等。

    通过 package.json 文件可以方便管理应用和发布应用。

    创建 package.json 文件: npm init

    快速创建 package.json 文件: npm init --yes

    {
      "name": "project-name",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    

    3.4 下载 Node.js 软件包

    在应用程序的根目录执行命令:npm install <pkg> 或者 npm i <pkg>

    npm install lodash

    软件包下载完成后会发生三件事:

    1. 软件包会被存储在 node_modules 文件夹中,如果在应用中不存在此文件夹,npm 会自动创建。

    2. 软件包会被记录在 package.json 文件中. 包含软件包的名字以及版本号。

    3. npm 会在应用中创建 package-lock.json 文件, 用于记录软件包及软件包的依赖包的下载地址及版本。

    3.5 使用 Node.js 软件包

    在引入第三方软件包时,在 require 方法中不需要加入路径信息,只需要使用软件包的名字即可,require 方法会自动去 node_modules 文件夹中进行查找。

    const _ = require("lodash")
    
    const array = ["a", "b", "c", "d"]
    // chunk 对数组中的元素进行分组
    // 参数一表示要进行操作的数组
    // 参数二表示每一组中包含的元素个数
    console.log(_.chunk(array, 2)) // [ [ 'a', 'b' ], [ 'c', 'd' ] ]
    

    3.6 软件包依赖问题说明

    1. 比如在我的应用中要依赖 mongoose 软件包,于是我下载了它,但是在 node_modules 文件夹中除了包含 mongoose 以外还多出了很多其他软件包,为什么会多出这么多软件包呢?

      实际上它们又是 mongoose 依赖的软件包。

    2. 为什么 mongoose 依赖的软件包不放在 mongoose 文件夹中呢?

      在早期的 npm 版本中, 某个软件包依赖的其他软件包都会被放置在该软件包内部的 node_modules 文件夹中,但是这样做存在两个问题,第一个问题是很多软件包都会有相同的依赖,导致开发者在一个项目中会下载很多重复的软件包,比如 A 依赖 X,B 依赖 X,C 依赖 X,在这种情况下 X 就会被重复下载三次。第二个问题是文件夹嵌套层次太深,导致文件夹在 windows 系统中不能被直接删除。比如 A 依赖 B, B 依赖 C, C 依赖 D … , 就会发生文件夹依次嵌套的情况。

    3. 所有的软件包都放置在 node_modules 文件夹中不会导致软件包的版本冲突吗?

      在目前的 npm 版本中,所有的软件包都会被直接放置在应用根目录的 node_modules 文件夹中,这样虽然解决了文件夹嵌套层次过深和重复下载软件包的问题,但如果只这样做肯定会导致软件包版本冲突的问题,如何解决呢?

      比如 A 依赖 X 的 1 版本,B 依赖 X 的 2 版本,如果你先下载的是 A,那么 A 依赖的 X 会被放置在根目录的 node_modules 文件夹中, 当下载 B 时,由于在根目录中已经存在 X 并且版本不一致,那么 B 依赖的 X 就会被放置在 B 软件包中的 node_module 文件夹中,通过此方式解决软件包版本冲突的问题。

    4. node_modules 文件夹中的软件包都需要提交到 git 仓库中吗?

      在 node_modules 文件夹中有很多软件包,随着应用程序的增长,软件包也会越来越多,甚至会达到几百兆。

      当我们将应用提交到版本库时,我们不想提交它,因为它们不是我们应用中的源代码,而且由于碎文件比较多,其他人在检出代码时需要等待的时间会很久。当其他人拿到应用程序时没有依赖软件包应用程序是运行不起来的,如何解决呢?

      实际上应用程序依赖了哪些软件包在 package.json 文件中都会有记录,其他人可以通过 npm install 命令重新下载它们。为了保持下载版本一直,npm 还会根据 package-lock.json 文件中的记录的地址进行下载。

      将应用程序提交到版本库之前,将 node_modules 文件夹添加到 .gitignore 文件中。

      git init
      git status
      echo "node_modules/" > .gitignore
      git status
      git add .
      git commit -m "our first commit"
      

    3.7 语义版本控制

    1. 版本号规范

      Major Version 主要版本:添加新功能 (破坏现有 API) -> 6.0.0

      Minor version 次要版本:添加新功能 (不会破坏现有 API, 在现有 API 的基础上进行添加) -> 5.13.0

      Patch version 补丁版本:用于修复 bug -> 5.12.6

    2. 版本号更新规范

      ^5.12.5: 主要版本不变,更新次要版本和补丁版本

      ~5.12.5: 主要版本和次要版本不变,更新补丁版本

      5.12.5: 使用确切版本,即主要版本,次要版本,补丁版本固定

    3.8 查看软件包实际版本

    当过了一段时间以后,其他人从版本库中下载了你的应用程序,并通过 npm install 命令恢复了应用程序的依赖软件包,但是此时应用程序的依赖软件包版本可能会发生变化,而应用程序的 package.json 文件中记录的只是大致版本,如何查看依赖软件包的具体版本呢?

    方式一:在 node_modules 文件夹中找到对应的依赖软件包,找到它的 package.json 文件,可以在这个文件中的 version 字段中找到它的具体版本。

    方式二:通过 npm list 命令查看所有依赖软件包的具体版本, --depth 选项指定查看依赖包的层级。

    3.9 查看软件包元数据

    npm view mongoose
    npm view mongoose versions
    npm view mongoose dist-tags dependencies
    

    3.10 下载特定版本的软件包

    npm i <pkg>@<version>
    npm i mongoose@2.4.2 lodash@4.7.0
    
    cat package.json
    npm list --depth 0
    

    3.11 删除软件包

    npm uninstall <pkg>
    npm uninstall mongoose
    npm un mongoose
    

    3.12 更新软件包

    通过 npm outdated 命令可以查看哪些软件包已经过期,对应的新版本是什么。

    通过 npm update 更新过期的软件包,更新操作遵循语义版本控制规则。

    3.13 项目依赖 VS 开发依赖

    项目依赖:无论在开发环境还是线上环境只要程序在运行的过程中需要使用的软件包就是项目依赖。比如 lodash,mongoose。

    开发依赖:在应用开发阶段使用,在生产环境中不需要使用的软件包,比如 TypeScript 中的类型声明文件。

    package.json 文件中, 项目依赖和开发依赖要分别记录,项目依赖被记录在 dependencies 对象中,开发依赖被记录在 devDependencies 中,使开发者可以在不同的环境中下载不同的依赖软件包。

    在下载开发依赖时,要在命令的后面加上 --save-dev 选项或者 -D 选项。npm i eslint -D

    在开发坏境中下载所有依赖软件包: npm install

    在生产环境中只下载项目依赖软件包: npm install --prod

    3.14 本地安装与全局安装

    1. 本地安装与全局安装

      本地安装:将软件包下载到应用根目录下的 node_modules 文件夹中,软件包只能在当前应用中使用。

      全局安装:将软件包下载到操作系统的指定目录中,可以在任何应用中使用。

      通过 -g 选项将软件包安装到全局:npm install <pkg> -g

      查看全局软件包安装位置:npm root -g

      删除全局中的软件包: npm un npm-check-updates -g

      查看全局中安装了哪些软件包: npm list -g --depth 0

      查看全局中有哪些过期软件包: npm outdated -g

    2. nodemon

      问题:在 node 环境中每次修改 JavaScript 文件后都需要重新执行该文件才能看到效果。

      通过 nodemon 可以解决此烦恼,它是命令工具软件包,可以监控文件变化,自动重新执行文件。

      npm install nodemon@2.0.7 -g

      nodemon app.js

    3. npm-check-updates 强制更新

      npm-check-updates 可以查看应用中有哪些软件包过期了,可以强制更新 package.json 文件中软件包版本

      1. npm-check-updates 安装到全局: npm install npm-check-updates -g
    4. 查看过期软件包:npm-check-updates

      1. 更新 package.json:ncu -u
    5. 安装软件包:npm i

    6. 检测:npm outdatednpm-check-updates

    3.15 发布软件包

    1. 注册 npm 账号

    2. 创建软件包

      mkdir lagou-node-test && cd "$_"
      npm init --yes
      
    3. 创建模块 index.js

      module.exports = function (a, b) {
        return a + b
      }
      
    4. 登录 npm (npm 镜像地址必须为 npmjs.com)

      npm login
      
    5. 发布软件包

      npm publish
      
    6. 测试: 在其他应用中使用该软件包

      npm install lagou-node-test
      

      创建 index.js 模块

      const lagouNodeTest = require("lagou-node-test")
      console.log(lagouNodeTest.add(1, 2)) // 3
      

    3.16 更新版本号

    在软件包的源代码发生更改后, 是不能直接发布的, 应该新更新软件包的版本号然后再进行发布.

    更新主要版本号:npm version major

    更新次要版本号:npm version minor

    更新补丁版本号:npm version patch

    3.17 撤销已发布的软件包

    1. 只有在发布软件包的24小时内才允许撤销
    2. 软件包撤销后 24 小时以后才能重新发布
    3. 重新发布时需要修改包名称和版本号

    npm unpublish <pkg> --force

    3.18 更改 npm 镜像地址

    由于 npmjs.com 是国外的网站,大多数时候下载软件包的速度会比较慢,如何解决呢?

    可以通过配置的方式更改 npm 工具的下载地址。

    1. 获取 npm 配置

      npm config list -l --json

      -l 列表所有默认配置选项

      –json 以 json 格式显示配置选项

    2. 设置 npm 配置

      获取 npm 下载地址:npm config get registry

      获取 npm 用户配置文件: npm config get userconfig

    3. 更改 npm 镜像地址

      npm config set registry https://registry.npm.taobao.org
      npm config set registry https://registry.npmjs.org/
      cat .npmrc
      

    3.19 npx 命令

    npx 是 npm 软件包提供的命令,它是 Node.js 平台下软件包执行器。主要用途有两个,第一个是临时安装软件包执行后删除它,第二个是执行本地安装的提供命令的软件包。

    1. 临时安装软件包执行后删除软件包

      有些提供命令的软件包使用的频率并不高,比如 create-react-app 脚手架工具,我能不能临时下载使用,然后再删掉它。

      npx create-react-app react-test
      
    2. 执行本地安装的软件包

      现在有两个项目都依赖了某个命令工具软件包,但是项目 A 依赖的是它的 1 版本,项目 B 依赖的是它的 2 版本,我在全局到底应该安装什么版本呢 ?

      该软件包可以在本地进行安装,在 A 项目中安装它的 1 版本, 在 B 项目中安装它的 2 版本,在应用中可以通过 npx 调用 node_modules 文件夹中安装的命令工具。

    将所有软件包安装到应用本地是现在最推荐的做法,一是可以防止软件包的版本冲突问题,二是其他开发者在恢复应用依赖时可以恢复全部依赖,因为软件包安装到本地后会被 package.json 文件记录,其他开发者在运行项目时不会因为缺少依赖而报错。

    3.20 配置入口文件的作用

    应用程序入口文件就是应用程序执行的起点,就是启动应用程序时执行的文件。

    场景一:其他开发者拿到你的软件包以后,通过该文件可以知道应用的入口文件是谁,通过入口文件启动应用。

    场景二:通过 node 应用文件夹 命令启动应用。node 命令会执行 package.json 文件中 main 选项指定的入口文件,如果没有指定入口文件,则执行 index.js。

    3.21 模块查找规则

    1. 在指定了查找路径的情况下

      require("./server")
      
      1. 查找 server.js
      2. 查找 server.json
      3. 查找 server 文件夹, 查看入口文件 (package.json -> main)
      4. 查找 server 文件夹 中的 index.js 文件
    2. 在没有指令查找路径的情况下

      require('server')
      
      paths: [
        '/Users/administrators/Desktop/Node/code/node_modules',
        '/Users/administrators/Desktop/Node/node_modules',
        '/Users/administrators/Desktop/node_modules',
        '/Users/administrators/node_modules',
        '/Users/node_modules',
        '/node_modules'
      ]
      

    获取免费软件资源、交流前端技术—WX:NY378599

    展开全文
  • 因为项目发展需求,版本不能只停留在node12,必须要更新。 在学校安装的node,是这个版本 我的硬件是win10 然后我隔壁同事先更新node16版本,结果报错浪费了一下午的时间都没有解决,又装回12的去了。那时的我还...

    因为项目发展需求,版本不能只停留在node12,必须要更新。

    在学校安装的node,是这个版本

    我的硬件是win10

    然后我隔壁同事先更新node16版本,结果报错浪费了一下午的时间都没有解决,又装回12的去了。那时的我还没更新,后来一个男同事帮她装,解决了她遇到的问题。

    我刚开始也以为到控制面板这里卸载node就可以了。

     

    后来边做我的事情,边听,原来是因为卸不干净,导致下载下来的node12的node_module重复了。

    那么卸载node并升级node的完整步骤如下

    1、先卸载node

    2、然后检查是否有一下文件夹,若有,就删除

    1. c://user/xxx/node_models
    2. c://Program Fiels/nodejs
    3. c://user/xxx/AppData/Roaming/npm
    4. c://user/xxx/AppData/Roaming/npm-cache

    3、到官网找到对应windows的node16版本下载,

     像上面.msi的一个包。下载安装后自动配置环境变量。如果是.zip的压缩包,则需自己配置。

    4、安装node

     点击下载好的安装包,一路next,安装路径可以根据自己的需求来改。


    5、测试

    在cmd命令下输入这两条语句

    npm -v
    node -v

     

     能正常看到就是下载成功了。

    你以为到这了就完了吗,还没有。你下载好了,但是你还需要启动一下你的vue-cli项目

    不启动不知道,一启动吓一跳。npm run serve后报了一大堆错。图如下

    然后开始百度之旅,参照各个博主的解决办法。npm install 又 npm uninstall 还是出现一系列报错

     C:\WINDOWS\system32\cmd.exe /d /s /c node-gyp rebuild

    npm ERR! code 1
    npm ERR! path D:\Hhyp-work\新建文件夹\SVN\node_modules\node-sass
    npm ERR! command failed
    npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node-gyp rebuild
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@8.4.1
    npm ERR! gyp info using node@16.14.2 | win32 | x64
    npm ERR! gyp ERR! find Python
    npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
    npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
    npm ERR! gyp ERR! find Python checking if "python3" can be used
    npm ERR! gyp ERR! find Python - "python3" is not in PATH or produced an error
    npm ERR! gyp ERR! find Python checking if "python" can be used
    npm ERR! gyp ERR! find Python - "python" is not in PATH or produced an error
    ……
    npm ERR! gyp ERR! configure error
    npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
    npm ERR! gyp ERR! stack     at PythonFinder.fail (D:\Hhyp-work\新建文件夹\SVN\node_modules\node-gyp\lib\find-python.js:330:47)
    npm ERR! gyp ERR! stack     at PythonFinder.runChecks (D:\Hhyp-work\新建文件夹\SVN\node_modules\node-gyp\lib\find-python.js:159:21)
    npm ERR! gyp ERR! stack     at PythonFinder.<anonymous> (D:\Hhyp-work\新建文件夹\SVN\node_modules\node-gyp\lib\find-python.js:228:18)
    npm ERR! gyp ERR! stack     at PythonFinder.execFileCallback (D:\Hhyp-work\新建文件夹\SVN\node_modules\node-gyp\lib\find-python.js:294:16)
    npm ERR! gyp ERR! stack     at exithandler (node:child_process:406:5)
    npm ERR! gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:418:5)
    npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
    npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
    npm ERR! gyp ERR! stack     at onErrorNT (node:internal/child_process:478:16)
    npm ERR! gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
    npm ERR! gyp ERR! System Windows_NT 10.0.19042
    npm ERR! gyp ERR! command "D:\\Program Files\\nodejs\\node.exe" "D:\\Hhyp-work\\新建文件夹\\SVN\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
    npm ERR! gyp ERR! cwd D:\Hhyp-work\新建文件夹\SVN\node_modules\node-sass
    npm ERR! gyp ERR! node -v v16.14.2
    npm ERR! gyp ERR! node-gyp -v v8.4.1
    npm ERR! gyp ERR! not ok
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\晨洛溪月\AppData\Local\npm-cache\_logs\2022-04-05T09_59_20_049Z-debug-0.log

     Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin"} (current: {"os":"win32","arch":"x64"})

    又尝试安装对应的版本,还是不行。

      ERR! While resolving: sass-loader@10.0.1
    npm ERR! Found: node-sass@6.0.1
    npm ERR! node_modules/node-sass
    npm ERR!   dev node-sass@"6.0.1" from the root project

    甚至还想全局安装vue-cli

    后来参考该博主的文章,按照它的方法终于成功了。

    就是升级到node16后, 不要安装node-sass,安装sass就可以了,package.json如下:

     先后分别执行以下的脚本

    npm uninstall sass-loader node-sass
    npm install sass-loader@8.0.2 sass@1.26.5  --save-dev

    然后启动就可以 了。

    希望这些能帮助到你

    解决问题过程中参考这两个博主的文章

    nodejs的卸载及重装_strawberry_x的博客-CSDN博客_nodejs卸载https://blog.csdn.net/strawberry_x/article/details/113648770解决sass-loader和node-sass版本冲突问题(太难了)_胡庚申的博客-CSDN博客https://blog.csdn.net/qq_17555933/article/details/119463767?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2

    展开全文
  • Node.js开发实战详解源代码

    千次下载 热门讨论 2015-11-29 15:10:48
    书由浅入深,全面、系统地介绍了Node.js开发技术。书中提供了大量有针对性的实例,供读者实践学习,同时提供了大量的实践练习题及详尽的解答,帮助读者进一步巩固和提高。本书重在代码实践,阅读时应多注重实践编程...
  • Version LTS Date V8 npm NODE_MODULE_VERSION[1] Node.js 15.5.1 2021-01-04 8.6.395.17 7.3.0 88 Downloads Changelog Docs Node.js 15.5.0 2020-12-22 8.6.395.17 7.3.0 88 Downloads Changelog Docs Node.js ...
  • Node-RED教程(十四):定制Node-REDUI

    千次阅读 多人点赞 2021-03-31 19:10:42
    Node-RED系列文章目前已经写了13篇,介绍了Node-RED的安装以及默认安装的一些基本节点的使用,作为物联网的一个可视化拖动的流程,Node-RED的确实很容易上手。还没开始学习的同学可以先看下我以前的文章。 物联网...
  • node安装

    万次阅读 2022-03-14 13:55:10
    1、进入node官网,下载长期支持版,安装 2、输入node -v,能查询到版本号即为安装成功 3、为方便管理,修改默认的缓存和模块存放路径(C:\Users\Administrator\AppData\Roaming\npm),在nodede 安装文件夹下创建两...
  • 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度...
  • 1、node 版本、node-sass 版本及 sass-loader 版本查看: 其一、我的 node 版本查看: 在命令行输入查询命令:node -v 我的 node 版本为:v14.19.0 其二、我的 node-sass 版本查看:"node-sass": "^4.14.1" 其三、...
  • node-V14、node-v16及其他版本安装安装配置
  • node安装和node设置淘宝镜像

    千次阅读 2022-03-01 15:19:06
    node下载地址Node.js (nodejs.org) 注意版本要跟自己的电脑系统匹配才可以,不然会出出现如下报错 Node.js this application is only sipported on windows 8.1,windows Server 2012 解决办法,选择之前老版本...
  • node的安装、配置环境变量、常用全局包汇总、配置镜像源、node版本切换nvm
  • 降低node版本,怎么降低node版本

    千次阅读 2022-04-24 16:13:55
    降低node版本,怎么降低node版本? 部分老旧项目需要使用低版本的node,网上很多是无效的,高版本无法直接安装低版本node,但是低版本nodejs可以安装部分高版本node,从而达到升级效果。 降低node 版本终极方案:...
  • 11月 05 10:58:35 localhost.localdomain kubelet[974]: E1105 10:58:35.108952 974 kubelet.go:2412] "Error getting node" err="node \"localhost.localdomain\" not found" 11月 05 10:58:35 localhost....
  • 升级Node版本

    万次阅读 2022-05-11 16:55:18
    注意:下述命令如果提示没有权或是运行在mac,请在命令的前边加上sudo 1.第一步清楚node缓存 npm cache clean -f 2.第二步:安装n模块(n...4. 查看node版本(node -v) /查看node安装路径 (which node) ...
  • 更新node版本

    千次阅读 2022-03-21 11:39:20
    由于这种原因, 今天使用vue-cli创建项目的使用,我使用了另外一款包管理工具,Yarn进行包的下载与管理,这是因为如此遇到了标题中的node版本问题 意思应该是我的node版本不符号它的期望,建议更新为给定的那几个...
  • 报错信息: gyp ERR! build error ... stack at ChildProcess.onExit (/Users/node_modules/node-gyp/lib/build.js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:315:20) gyp ERR! stack .
  • Node npm升级

    千次阅读 2022-03-13 16:21:47
    Node npm升级 一、Node 升级 1、利用Node.js的多版本管理器n sudo npm cache clean -f //清除nodejs的cache: sudo npm install -g n //使用npm安装n模块 npm view node versions // node所有版本 sudo n latest //...
  • node版本降级

    千次阅读 2022-04-06 21:59:03
    问题原因: 因为node版本过高,导致npm install 或npm run dev报错 1)安装node版本管理模块 n sudo npm install n -g 2)根据自己需要的安装版本 例如: 安装稳定版本 sudo n stable 安装最新版本 sudo n ...
  • Node.js安装与配置(详细步骤)

    千次阅读 多人点赞 2022-05-17 21:49:25
    本篇博文记录了Node.js安装与环境变量配置的详细步骤,旨在为将来再次配置Node.js时提供指导方法。
  • node 概述 Node是什么 能用Node干什么

    千次阅读 2020-11-11 08:40:21
    1.1 node概述 什么是node node是一个JS运行环境 浏览器也是一个运行环境,JS代码写好之后需要放到浏览器里面去运行,脱离了浏览器是没有办法运行的,现在不仅浏览器能运行JS,Node也能运行Js。 他比浏览器拥有更...
  • Node 多版本管理

    千次阅读 2022-02-22 14:20:29
    Node 学习 Node 多版本管理
  • 简单说说NODE_ENV

    千次阅读 2022-03-18 23:50:58
    简单介绍什么使NODE_ENV,然后介绍windows和Linux的NODE_ENV的配置方式。
  • 一、安装 node node 中文官网下载最新的安装包。 如果要安装以往的 node 版本请戳这里。我安装的是 10.13.0 版本。 【注意】:下载时,建议选择尾缀名是 .pkg 的文件下载。 下载下来,直接安装,一路绿灯,OK。 ...
  • Linux环境安装node

    千次阅读 2022-03-16 17:38:18
    3、到node.js官网下载node的安装包 4、将下载好的安装包,传输到服务器刚才创建好的文件夹中 4.1、选中创建的文件夹并打开 4.2、在xftp左侧选中下载的node安装包 4.3、右击–》传输 5、打开命令行工具Xshell工具...
  • process.env.NODE_ENV详解

    千次阅读 多人点赞 2021-04-26 17:42:00
    一、 process.env.NODE_ENV是什么? 在node中,有全局变量process表示的是当前的node进程。 process.env包含着关于系统环境的信息,但是process.env中并不存在NODE_ENV这个东西。 NODE_ENV是一个用户自定义的变量...
  • Node.js简介——为什么要学习node.js

    千次阅读 多人点赞 2021-08-31 21:07:54
    目录什么是node.js为什么要学习node.jsnode.js特点 什么是node.js Node.js简称Node,是一个可以使JavaScript运行在服务器端的开发平台。 (1)Node.js本是一种Web前端语言,Node.js让JavaScript成为服务器端脚本...
  • node和npm的关系,node和npm的关联

    千次阅读 2021-06-03 15:53:13
    我们安装了node之后: 你可以发现:node -v 或者npm -v可以查看到node和npm的两个版本,这是为什么呢?二者又有什么关系 一、npm是什么 当一个网站依赖的js代码越来越多,程序员发现这是一件很麻烦的事情: 去 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,013,544
精华内容 1,205,417
关键字:

node

友情链接: 呼吸灯.zip