精华内容
下载资源
问答
  • nrm的下载安装与使用

    2021-01-09 13:22:02
    nrm下载安装,相关的用法及作用的介绍 前言  了解 nrm 之前, 先介绍一下 npm,npm是随同 node一起安装的node环境下的包管理工具,可以帮助我们解决很多问题。(好处多多,超级实用)  举栗它的使用场景:  1. ...
  • 主要介绍了nvm、nrm、npm 安装和使用详解(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • nrm

    2021-02-23 17:26:23
    nrm的介绍及错误处理

    nrm

    nrm可对npm进行包源的切换

    npm i nrm -g
    nrm ls // 查看可选源
    nrm use taobao // 设置后使用npm下载就是当前使用的源
    

    若执行报错

    internal/validators.js:124 throw new ERR_INVALID_ARG_TYPE(name, 'string', value)

    若没变更下载路径,则找到C:\Users\username\AppData\Roaming\npm\node_modules\nrm\cli.js,更改第17行

    //const NRMRC = path.join(process.env.HOME, '.nrmrc'); (删除)
    const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
    

    nrm ls执行成功显示

    nrmls
    nrm命令

    // 查看当前使用源
    nrm current
    
    // 切换源
    nrm use <registry>
    nrm use taobao
    
    // 添加源,如添加私有npm源,地址:http://192.168.66.66:2333/npm-katsuki/
    // nrm ls 查看是否添加成功
    nrm add kpm http://192.168.66.66:2333/npm-katsuki/
    
    // 删除源
    nrm del kpm
    
    // 测试源速度
    nrm test npm
    

    powershell执行nrm出错

    nrm : 无法加载文件 C:\Users\username\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本。
    
    • 1.win菜单搜索powershell以管理身份运行

    • 2.使用Set-ExecutionPolicy RemoteSigned命令将计算机上的执行策略更改为 RemoteSigned,输入Y

    • 3.查看计算机执行策略get-ExecutionPolicy

    • 4.执行命令:Set-ExecutionPolicy RemoteSigned -Scope Process,再次输入Y

    Get-ExecutionPolicy -List:按照优先级来查看执行策略,确认策略的状态

    展开全文
  • nrm可以帮助您在不同的npm注册表之间轻松快捷地切换,现在包括: npm , cnpm , taobao , nj(nodejitsu) 。 如何配置yarn以使用私有注册表? 只需在您项目的目录中添加.yarnrc并在其中写入: registry ...
  • nrm可以帮助您在不同的npm注册表之间轻松快捷地切换,现在包括: npm , cnpm , taobao , nj(nodejitsu) 。 如何配置yarn使用私有注册表? 只需在您的项目目录中添加.yarnrc并在其中写入: registry ...
  • nrm错误

    2021-03-24 22:13:03
    nrm ls internal/validators.js:120 throw new ERR_INVALID_ARG_TYPE(name, 'string', value); ^ [TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined at ...

    G:\vscode_doc\vue_test>nrm ls
    internal/validators.js:120
        throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
        ^

    [TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
      at validateString (internal/validators.js:120:11)
      at Object.join (path.js:375:7)
      at Object.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js:17:20)
      at Module._compile (internal/modules/cjs/loader.js:1137:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
      at Module.load (internal/modules/cjs/loader.js:985:32)
      at Function.Module._load (internal/modules/cjs/loader.js:878:14)
      at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
      at internal/main/run_main_module.js:17:47
    ] {
      code: 'ERR_INVALID_ARG_TYPE'
    }

     

    1、检查node.js是否安装成功,输入 node -v 查看版本号。

    2、查看npm是否安装成功,输入npm -v查看版本号。

    如果没有出现版本号,可能是没有安装成功,建议去nodejs官网重新安装。

    3、报错中可见 cli.js文件中 第17行报错,

      at Object.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js:17:20)

    修改为:

    const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
    

    再用管理员模式运行cmd(执行完3、右键之后,有一个“以管理员身份运行”的选项,选中即可),

     

     

     

    展开全文
  • nrm-calc NRM价格计算器 用法 选择您要租赁的金额(0.00001%-100%)并设置所需的模型参数。 因此,当以30%的利用率(当前CPU利用率)使用网络时,要租用0.1%的网络容量(34秒的CPU)24小时,您需要支付约20 EOS...
  • nrm安装后运行报错解决办法

    千次阅读 2021-06-16 10:42:04
    nrm安装后运行报错解决办法nrm安装后运行报错报错代码:修复办法修复cli.js后完整代码最后测试与验证 nrm安装后运行报错 安装完nrm后执行nrm命令报错,无论是 nodejs14 还是 nodejs12 都报错, 排除是nodejs版本问题. ...

    nrm安装后运行报错

    安装完nrm后执行nrm命令报错,无论是 nodejs14 还是 nodejs12 都报错, 排除是nodejs版本问题.

    报错代码:

    // 安装nrm
    >npm install -g nrm
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
    npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
    npm WARN deprecated coffee-script@1.7.1: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
    npm WARN deprecated har-validator@5.1.5: this library is no longer supported
    npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
    C:\Users\Administrator\AppData\Roaming\npm\nrm -> C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js
    + nrm@1.2.1
    added 315 packages from 151 contributors in 32.491s
    
    // 测试nrm命令
    >nrm
    internal/validators.js:117
        throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
        ^
    
    [TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
      at validateString (internal/validators.js:117:11)
      at Object.join (path.js:375:7)
      at Object.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js:17:20)
      at Module._compile (internal/modules/cjs/loader.js:1158:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
      at Module.load (internal/modules/cjs/loader.js:1002:32)
      at Function.Module._load (internal/modules/cjs/loader.js:901:14)
      at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
      at internal/main/run_main_module.js:18:47
    ] {
      code: 'ERR_INVALID_ARG_TYPE'
    }
    
    

    修复办法

    找到nvm文件夹安装位置,打开 \npm\node_modules\nrm\cli.js 第17行, 注释此行并在后面一行追加如下内容修改成

    //const NRMRC = path.join(process.env.HOME, '.nrmrc'); (删除或者注释掉此行)
    const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
    

    修复cli.js后完整代码

    #!/usr/bin/env node
    
    const path = require('path');
    const fs = require('fs');
    const program = require('commander');
    const npm = require('npm');
    const ini = require('ini');
    const echo = require('node-echo');
    const extend = require('extend');
    const open = require('open');
    const async = require('async');
    const request = require('request');
    const only = require('only');
    
    const registries = require('./registries.json');
    const PKG = require('./package.json');
    //const NRMRC = path.join(process.env.HOME, '.nrmrc');
    const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
    const REGISTRY_ATTRS = [];
    const FIELD_AUTH = '_auth';
    const FIELD_ALWAYS_AUTH = 'always-auth';
    const FIELD_IS_CURRENT = 'is-current';
    const FIELD_REPOSITORY = 'repository';
    const IGNORED_ATTRS = [FIELD_IS_CURRENT, FIELD_REPOSITORY];
    
    
    program
        .version(PKG.version);
    
    program
        .command('ls')
        .description('List all the registries')
        .action(onList);
    
    program
        .command('current')
        .description('Show current registry name')
        .action(showCurrent);
    
    program
        .command('use <registry>')
        .description('Change registry to registry')
        .action(onUse);
    
    program
        .command('add <registry> <url> [home]')
        .description('Add one custom registry')
        .action(onAdd);
    
    program
        .command('set-auth <registry> [value]')
        .option('-a, --always-auth', 'Set is always auth')
        .option('-u, --username <username>', 'Your user name for this registry')
        .option('-p, --password <password>', 'Your password for this registry')
        .description('Set authorize information for a custom registry with a base64 encoded string or username and pasword')
        .action(onSetAuth);
    
    program
        .command('set-email <registry> <value>')
        .description('Set email for a custom registry')
        .action(onSetEmail);
    
    program
        .command('set-hosted-repo <registry> <value>')
        .description('Set hosted npm repository for a custom registry to publish packages')
        .action(onSetRepository);
    
    program
        .command('del <registry>')
        .description('Delete one custom registry')
        .action(onDel);
    
    program
        .command('home <registry> [browser]')
        .description('Open the homepage of registry with optional browser')
        .action(onHome);
    
    program
        .command('publish [<tarball>|<folder>]')
        .option('-t, --tag [tag]', 'Add tag')
        .option('-a, --access <public|restricted>', 'Set access')
        .option('-o, --otp [otpcode]', 'Set otpcode')
        .option('-dr, --dry-run', 'Set is dry run')
        .description('Publish package to current registry if current registry is a custom registry.\n if you\'re not using custom registry, this command will run npm publish directly')
        .action(onPublish);
    
    program
        .command('test [registry]')
        .description('Show response time for specific or all registries')
        .action(onTest);
    
    program
        .command('help', { isDefault: true })
        .description('Print this help')
        .action(function() {
            program.outputHelp();
        });
    
    program
        .parse(process.argv);
    
    
    if (process.argv.length === 2) {
        program.outputHelp();
    }
    
    /* cmd methods /*/
    
    function onList() {
        getCurrentRegistry(function(cur) {
            var info = [''];
            var allRegistries = getAllRegistry();
    
            Object.keys(allRegistries).forEach(function(key) {
                var item = allRegistries[key];
                var prefix = item.registry === cur ? '* ' : '  ';
                info.push(prefix + key + line(key, 12) + item.registry);
            });
    
            info.push('');
            printMsg(info);
        });
    }
    
    function showCurrent() {
        getCurrentRegistry(function(cur) {
            var allRegistries = getAllRegistry();
            Object.keys(allRegistries).forEach(function(key) {
                var item = allRegistries[key];
                if (item.registry === cur) {
                    printMsg([key]);
                    return;
                }
            });
        });
    }
    
    function config(attrArray, registry, index = 0) {
        return new Promise((resolve, reject) => {
            const attr = attrArray[index];
            const command = registry.hasOwnProperty(attr) ? ['set', attr, String(registry[attr])] : ['delete', attr];
            npm.commands.config(command, function(err, data) {
                return err ? reject(err) : resolve(index + 1);
            });
        }).then(next => {
            if (next < attrArray.length) {
                return config(attrArray, registry, next);
            } else {
                return Promise.resolve();
            }
        });
    }
    
    function onUse(name) {
        var allRegistries = getAllRegistry();
        if (allRegistries.hasOwnProperty(name)) {
            var registry = allRegistries[name];
            npm.load(function(err) {
                if (err) return exit(err);
                const attrs = [].concat(REGISTRY_ATTRS);
                for (let attr in registry) {
                    if (!REGISTRY_ATTRS.includes(attr) && !IGNORED_ATTRS.includes(attr)) {
                        attrs.push(attr);
                    }
                }
                config(attrs, registry).then(() => {
                    console.log('                        ');
                    var newR = npm.config.get('registry');
                    var customRegistries = getCustomRegistry();
                    Object.keys(customRegistries).forEach(key => {
                        delete customRegistries[key][FIELD_IS_CURRENT];
                    });
                    if (customRegistries.hasOwnProperty(name) && customRegistries[name].registry === registry.registry) {
                        registry[FIELD_IS_CURRENT] = true;
                        customRegistries[name] = registry;
                    }
                    setCustomRegistry(customRegistries);
                    printMsg(['', '   Registry has been set to: ' + newR, '']);
                }).catch(err => {
                    exit(err);
                });
            });
        } else {
            printMsg(['', '   Not find registry: ' + name, '']);
        }
    }
    
    function onDel(name) {
        var customRegistries = getCustomRegistry();
        if (!customRegistries.hasOwnProperty(name)) return;
        getCurrentRegistry(function(cur) {
            if (cur === customRegistries[name].registry) {
                onUse('npm');
            }
            delete customRegistries[name];
            setCustomRegistry(customRegistries, function(err) {
                if (err) return exit(err);
                printMsg(['', '    delete registry ' + name + ' success', '']);
            });
        });
    }
    
    function onAdd(name, url, home) {
        var customRegistries = getCustomRegistry();
        if (customRegistries.hasOwnProperty(name)) return;
        var config = customRegistries[name] = {};
        if (url[url.length - 1] !== '/') url += '/'; // ensure url end with /
        config.registry = url;
        if (home) {
            config.home = home;
        }
        setCustomRegistry(customRegistries, function(err) {
            if (err) return exit(err);
            printMsg(['', '    add registry ' + name + ' success', '']);
        });
    }
    
    function onSetAuth(registry, value, cmd) {
        const customRegistries = getCustomRegistry();
        if (!customRegistries.hasOwnProperty(registry)) return;
        const config = customRegistries[registry];
        const attrs = [FIELD_AUTH];
        if (value) {
            config[FIELD_AUTH] = value;
        } else if (cmd.username && cmd.password) {
            config[FIELD_AUTH] = new Buffer(`${cmd.username}:${cmd.password}`).toString('base64');
        } else {
            return exit(new Error('your username & password or auth value is required'));
        }
        if (cmd[FIELD_ALWAYS_AUTH]) {
            config[FIELD_ALWAYS_AUTH] = true;
            attrs.push(FIELD_ALWAYS_AUTH);
        }
        new Promise(resolve => {
            config[FIELD_IS_CURRENT] ? resolve(config(attrs, config)) : resolve();
        }).then(() => {
            customRegistries[registry] = config;
            setCustomRegistry(customRegistries, function(err) {
                if (err) return exit(err);
                printMsg(['', '    set authorize info to registry ' + registry + ' success', '']);
            });
        }).catch(exit);
    }
    
    function onSetEmail(registry, value) {
        const customRegistries = getCustomRegistry();
        if (!customRegistries.hasOwnProperty(registry)) return;
        const config = customRegistries[registry];
        config.email = value;
        new Promise(resolve => {
            config[FIELD_IS_CURRENT] ? resolve(config(['email'], config)) : resolve();
        }).then(() => {
            customRegistries[registry] = config;
            setCustomRegistry(customRegistries, function(err) {
                if (err) return exit(err);
                printMsg(['', '    set email to registry ' + registry + ' success', '']);
            });
        }).catch(exit);
    }
    
    function onSetRepository(registry, value) {
        var customRegistries = getCustomRegistry();
        if (!customRegistries.hasOwnProperty(registry)) return;
        var config = customRegistries[registry];
        config[FIELD_REPOSITORY] = value;
        new Promise(resolve => {
            config[FIELD_IS_CURRENT] ? resolve(config([FIELD_REPOSITORY], config)) : resolve();
        }).then(() => {
            setCustomRegistry(customRegistries, function(err) {
                if (err) return exit(err);
                printMsg(['', `    set ${FIELD_REPOSITORY} to registry [${registry}] success`, '']);
            });
        }).catch(exit);
    }
    
    function onHome(name, browser) {
        var allRegistries = getAllRegistry();
        var home = allRegistries[name] && allRegistries[name].home;
        if (home) {
            var args = [home];
            if (browser) args.push(browser);
            open.apply(null, args);
        }
    }
    
    function onPublish(tarballOrFolder, cmd) {
        getCurrentRegistry(registry => {
            const customRegistries = getCustomRegistry();
            let currentRegistry;
            // find current using custom registry
            Object.keys(customRegistries).forEach(function(key) {
                const item = customRegistries[key];
                if (item.registry === registry && item['is-current']) {
                    currentRegistry = item;
                    currentRegistry.name = key;
                }
            });
            const attrs = ['registry'];
            let command = '> npm publish';
            const optionData = {};
            cmd.options.forEach(option => {
                const opt = option.long.substring(2);
                const optionValue = cmd[opt];
                if (optionValue) {
                    optionData[opt] = cmd[opt];
                    attrs.push(opt);
                }
            });
            new Promise((resolve, reject) => {
                if (currentRegistry) {
                    if (currentRegistry[FIELD_REPOSITORY]) {
                        printMsg(['',
                            '   current registry is a custom registry, publish to custom repository.',
                            ''
                        ]);
                        optionData.registry = currentRegistry[FIELD_REPOSITORY];
                        command += ` --registry ${currentRegistry[FIELD_REPOSITORY]}`;
                        Object.keys(optionData).forEach((key) => {
                            command += ` --${key} ${optionData[key]}`;
                        });
                        printMsg([command]);
                        resolve(config(attrs, optionData));
                    } else {
                        reject(new Error(`   current using registry [${currentRegistry.name}] has no ${FIELD_REPOSITORY} field, can't execute publish.`));
                    }
                } else {
                    printMsg(['',
                        '   current using registry is not a custom registry, will publish to npm official repository.',
                        ''
                    ]);
                    optionData.registry = registries.npm.registry;
                    // find current using registry
                    Object.keys(registries).forEach(function(key) {
                        const item = registries[key];
                        if (item.registry === registry) {
                            currentRegistry = item;
                            currentRegistry.name = key;
                        }
                    });
                    printMsg([command]);
                    resolve(config(attrs, optionData));
                }
            }).then(() => {
                const callback = (err) => {
                    config(attrs, currentRegistry).then(() => {
                        err && exit(err);
                        printMsg(['', `   published to registry ${currentRegistry[FIELD_REPOSITORY]} successfully.`, '']);
                    }).catch(exit);
                };
                try {
                    tarballOrFolder ? npm.publish(tarballOrFolder, callback) : npm.publish(callback);
                } catch (e) {
                    callback(err);
                }
            }).catch(err => {
                printErr(err);
            });
        });
    }
    
    function onTest(registry) {
        var allRegistries = getAllRegistry();
    
        var toTest;
    
        if (registry) {
            if (!allRegistries.hasOwnProperty(registry)) {
                return;
            }
            toTest = only(allRegistries, registry);
        } else {
            toTest = allRegistries;
        }
    
        async.map(Object.keys(toTest), function(name, cbk) {
            var registry = toTest[name];
            var start = +new Date();
            request(registry.registry + 'pedding', function(error) {
                cbk(null, {
                    name: name,
                    registry: registry.registry,
                    time: (+new Date() - start),
                    error: error ? true : false
                });
            });
        }, function(err, results) {
            getCurrentRegistry(function(cur) {
                var msg = [''];
                results.forEach(function(result) {
                    var prefix = result.registry === cur ? '* ' : '  ';
                    var suffix = result.error ? 'Fetch Error' : result.time + 'ms';
                    msg.push(prefix + result.name + line(result.name, 8) + suffix);
                });
                msg.push('');
                printMsg(msg);
            });
        });
    }
    
    
    
    /* helper methods /*/
    
    /*
     * get current registry
     */
    function getCurrentRegistry(cbk) {
        npm.load(function(err, conf) {
            if (err) return exit(err);
            cbk(npm.config.get('registry'));
        });
    }
    
    function getCustomRegistry() {
        return fs.existsSync(NRMRC) ? ini.parse(fs.readFileSync(NRMRC, 'utf-8')) : {};
    }
    
    function setCustomRegistry(config, cbk) {
        echo(ini.stringify(config), '>', NRMRC, cbk);
    }
    
    function getAllRegistry() {
        return extend({}, registries, getCustomRegistry());
    }
    
    function printErr(err) {
        console.error('an error occured: ' + err);
    }
    
    function printMsg(infos) {
        infos.forEach(function(info) {
            console.log(info);
        });
    }
    
    /*
     * print message & exit
     */
    function exit(err) {
        printErr(err);
        process.exit(1);
    }
    
    function line(str, len) {
        var line = new Array(Math.max(1, len - str.length)).join('-');
        return ' ' + line + ' ';
    }
    

    最后测试与验证

    >nrm test
    
    * npm ---- 869ms
      yarn --- 871ms
      cnpm --- 11452ms
      taobao - 166ms
      nj ----- Fetch Error
      npmMirror  2019ms
      edunpm - Fetch Error
    
    >nrm use taobao
    
    
       Registry has been set to: https://registry.npm.taobao.org/
    
    >npm config get registry
    https://registry.npm.taobao.org/
    
    

    至此nrm可以正常使用了.

    展开全文
  • nrm详解

    千次阅读 2021-02-04 16:26:57
    1,什么是nrm nrm 是一个 npm 源管理器,允许你快速地在 npm源间切换。 什么意思呢,npm默认情况下是使用npm官方源(使用npm config ls命令可以查看),在国内用这个源肯定是不靠谱的,一般我们都会用淘宝npm源:...

    1,什么是nrm

    nrm 是一个 npm 源管理器,允许你快速地在 npm源间切换。

    什么意思呢,npm默认情况下是使用npm官方源(使用npm config ls命令可以查看),在国内用这个源肯定是不靠谱的,一般我们都会用淘宝npm源:https://registry.npm.taobao.org/,修改源的方式也很简单,在终端输入:

    npm set registry https://registry.npm.taobao.org/
    

    再npm config ls查看,已经切换成功。

    那么,问题来了,如果哪天你又跑去国外了,淘宝源肯定是用不了的,又要切换回官网源,或者哪天你们公司有自己的私有npm源了,又需要切换成公司的源,这样岂不很麻烦?于是有了nrm。

    2,nrm安装

    npm install -g nrm
    

    3,nrm使用

    3.1查看可选源 星号代表当前使用源

    nrm ls
    

    在这里插入图片描述
    **3.1查看当前源

    nrm current
    

    在这里插入图片描述
    3.2 切换源

    nrm use <registry>
    

    其中,registry为源名。

    比如:切换为taobao源

    nrm use taobao
    

    在这里插入图片描述

    4,添加源

    nrm add <registry> <url>
    

    其中,registry为源名,url为源地址。

    比如:添加一个公司私有的npm源,源地址为:http://192.168.22.11:8888/repository/npm-public/,源名为cpm(随意取)。

    nrm add cpm http://192.168.22.11:8888/repository/npm-public/
    

    在这里插入图片描述

    然后,查看是否添加成功

    在这里插入图片描述

    5,删除源

    nrm del <registry>
    

    其中,registry为源名。

    比如:删除刚才添加的cpm源

    nrm del cpm
    

    6,测试源速度

    nrm test
    其中,registry为源名。

    比如:测试官方源和淘宝源的响应时间

    nrm test npm
    

    在这里插入图片描述

    nrm test taobao
    

    在这里插入图片描述

    展开全文
  • nodejs 安装 nrm

    2020-04-13 12:42:10
    nodejs默认源在国外,...安装 nrm,指定源路径,不需要每次修改 npm install nrm -g nrm ls * npm -------- https://registry.npmjs.org/ yarn ------- https://registry.yarnpkg.com/ cnpm ------- http:...
  • nrm镜像源管理

    2021-05-19 17:53:23
    1.[TypeError [ERR_INVALID_ARG_TYPE]: The “path” argument must be of type string. Received undefined 错误...下载低版本的nrm(可以) 1.1.0 1.2.0 1.2.1 npm install -g nrm@1.1.0 --save 提示 nrm -h 语法帮助
  • nrm使用报错

    2021-05-23 20:08:59
    nrm使用错误:ERR_INVALID_ARG_TYPE
  • nrm之安装与配置

    2020-11-10 08:57:34
    可以这么理解,npm是管理包,nrm用来管理npm 二、安装nrm 全局安装nrm npm install -g nrm 三、查看和使用源 1.查看可选的源 >nrm ls npm -------- ...
  • nrm install 安装与使用

    2021-02-22 15:50:16
    nrm 是一个 npm源管理器,允许你快速地在 npm源间切换。 什么意思呢,npm默认情况下是使用npm官方源(使用npm config ls命令可以查看),在国内用这个源肯定是不靠谱的,一般我们都会用淘宝npm源:...
  • nrm安装报错

    2021-05-18 14:41:35
    nrm安装报错TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined第一检查node是否安装,node -v。第二检查npm是否安装成功npm -v. 第一检查node是否安装,node -v。...
  • easy-nrm是使用nrm由不同的npm注册表安装软件包的简便方法。 安装 用安装; $ npm install -g easy-nrm 用法 在项目的根目录下,创建文件easy-nrm.config.json 。 { " registries " : { " my-npm " : [ " pkg1 ...
  • 输入nrm ls后问题如下图: 解决办法 : 1. 在windows中搜索上面的地址,右击打开文件夹所在位置 2.用vscode编辑器打开cli.js文件 3.在17行中将下图注释或者删除 4.将此行换成下面的代码即可 const NRMRC...
  • nrm + 一个环境工具 + 一个基于 node 运行的工具 => 当你的电脑里面安装了 node 以后, 就会伴随安装一个 npm => 只要是基于 node 环境运行的 "软件", 都可以直接使用 npm 安装 + 作用: 修改你电脑内的 ...
  • 1、什么是 nrm ? A、nrm 的全称为: ‘npm registry manager’ (即:指的是 ‘npm’ 的镜像源管理工具); B、nrm 的作用: nrm 的诞生就是为了使用者在各个不同 npm 源之间来回切换; npm 是全世界最大的软件注册表,...
  • nrm命令及其作用整理

    2021-07-21 09:08:53
    nrm是管理npm镜像路径的工具,可以查看,添加,修改,删除,非常的方便。 nrm的安装命令 npm install -g nrm 查看是否安装成功 nrm --version nrm ls:列出可选择的源 nrm ls 注:前面带星号的是正在使用...
  • nrm使用详解

    千次阅读 2020-03-23 21:59:45
    文章目录一. 介绍二. 安装三.基本使用1....nrm(npm registry manager) 是npm的镜像源管理工具. 有时候国外资源太慢,使用nrm可以快速的在npm源之间切换 二. 安装 > npm install -g nrm # 全局安装 `...
  • npm是nodejs的包管理器,我们每次安装包的时候,使用的装包工具都是npm; 而nrm只是单纯的提供了几个常用下载包的URL地址,并且...nrm装好之后,在cmd中运行nrm ls(如果出现nrm不是内部命令,则先去配置nrm环境...
  • node 运行nrmnrm ls 时报错无法查询到可选择的镜像源地址问题 1.安装 npm install nrm -g 2.运行 nrm ls 2.1这是正常会显示报错 列如下面形式 PS C:\Users\XXX\Desktop\res> nrm ls internal/validators.js:...
  • nrm 安装 删除 测速

    千次阅读 2020-04-24 17:18:41
    nrm(npm registry manager )是npm的镜像源管理工具 使用这个可以有效切换npm源; 全局安装 npm install -g nrm nrm ls 查看源 切换 nrm use taobao 切换 nrm use npm 删除源 nrm del (npm、taobao....
  • 主要是node下载安装的一个教程,nrm下载安装中碰见的一些问题。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,561
精华内容 3,024
关键字:

nrm