Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 51

1
votes
answers
28 views
+10

Why does npm install say I have unmet dependencies?

I have a node package. When I run npm install from the package root, it installs a bunch of things, but then prints several error messages that look like this:

npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob requires graceful-fs@'~1.2.0' but will load

I must be confused about what exactly npm install does. If it detects a dependency, shouldn't it install it? Under what conditions does it give me error messages like this, and how can I resolve the dependencies?

沙发
+10

我運行 npm list 並安裝列為UNMET DEPENDENCY的所有包

例如:

├──UNMETDEPENDENCY css- loader@^0.23.1
npm install css-loader@^0.23.1

這是一個非常簡單的解決方案。我只是用它作為一個機器人,當主持人告訴我這個機器人應該從git更新自己。問題是,一旦你進入應用程序,你就無法自己重啟。但是,我可以使用您的方法生成機器人的實例並觀察點文件。機器人然後更新自己,觸摸dotfile,並由啟動器自動重啟。真棒! - 弗雷德2013年1月14日23:46

@Fred我很高興聽到這個:)我將在一個模塊中實現這個解決方案,很快我猜,我有更多的想法如何擴展其功能 - micnic 2013年1月16日在10:25

如果不需要文件監視,則可以通過監聽不同的信號來重新加載而無需fs。 - 弗拉基米爾·武卡納克1月18日14:13

板凳
0

請注意你的角度版本,如果你在角度2.xx下工作,那麼你可能需要升級到角度4.xx

某些依賴關係需要角度4

這是一個如何安裝角度4或更新的教程你的項目。

它更多的是重新啟動服務器,如果它崩潰。當監視文件被更改時,node-supervisor也會重新啟動整個過程。從嚴格意義上說,它不是熱重載。 - nalply 2010年9月28日19:29

雖然不是真正的熱加載,但如果您只是希望代碼在開發時自動加載,則此工具非常有用,因此您不必在每次更改後在命令行中重新啟動節點。 - Derek Dahmer 2010年10月27日19:29

地板
0

更新到4.0.0

更新到4就像將Angular依賴項更新到最新版本一樣簡單,並仔細檢查是否需要動畫。這適用於大多數用例。

在Linux / Mac上:

  npm install @ angular / {common,compiler,compiler-cli,core,forms,http,平台瀏覽器,平台瀏覽器動態,平台服務器,路由器,動畫} @latest typescript @ latest --save   

在Windows上:

  npm install @ angular / common @ latest @ angular / compiler @ latest @ angular / compiler-cli @ latest @ angular / core @ latest @ angular / forms @ latest @ angular / http @ latest @ angular / platform-b??rowser @ latest @angular / platform-b??rowser-dynamic @ latest @ angular / platform-server @ latest @ angular / router @ latest @ angular / animations @ latest typescript @ latest --save   

然後運行任何服務器或者你通常使用的npm start命令,一切都應該有效。

如果你依賴動畫,從 @ angular / platform-b??rowser / animations <導入新的 BrowserAnimationsModule / code>在根 NgModule 中。如果沒有這個,您的代碼將編譯並運行,但動畫將觸發錯誤。來自 @ angular / core 的導入已棄用,使用來自“@ angular / animations”的新包

  import {trigger,state,style,transition,animate}的導入。 
     
			
        
4楼
0

npm install 將安裝來自 npm-shrinkwrap.json 的所有軟件包,但可能忽略 package.json 中的軟件包,如果它們'不在前者中預設。

如果您的項目有 npm-shrinkwrap.json ,請確保運行 npm shrinkwrap 以重新生成它,每次添加add / remove / change package.json

+1是的。我參加了討論。我承認我的解決方案太簡單了。它僅在熱模塊本身不需要其他模塊時才有效。Felix的解決方案經過深思熟慮,但如果自動重載確實屬於核心,則會引發爭議。 - nalply 2010年1月1日4:41

1
votes
answers
19 views
+10

How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)

My version of node is always v0.6.1-pre even after I install brew node and NVM install v0.6.19.

My node version is:

node -v
v0.6.1-pre

NVM says this (after I install a version of node for the first time in one bash terminal):

nvm ls
v0.6.19
current:    v0.6.19

But when I restart bash, this is what I see:

nvm ls
v0.6.19
current:    v0.6.1-pre
default -> 0.6.19 (-> v0.6.19)

So where is this phantom node 0.6.1-pre version and how can I get rid of it? I'm trying to install libraries via NPM so that I can work on a project.

I tried using BREW to update before NVM, using "brew update" and "brew install node". I've tried deleting the "node" directory in my /usr/local/include and the "node" and "node_modules" in my "/usr/local/lib". I've tried uninstalling npm and reinstalling it following these instructions.

All of this because I was trying to update an older version of node to install the "zipstream" library. Now there's folders in my users directory, and the node version STILL isn't up to date, even though NVM says it's using 0.6.19.

Ideally, I'd like to uninstall nodejs, npm, and nvm, and just reinstall the entire thing from scratch on my system.

沙发
+10

If you have already installed nvm then execute the following commands

  • nvm deactivate - This will remove /.nvm/*/bin from $PATH
  • nvm list - To list out all the versions of node installed in the system
  • nvm uninstall <version> in you can specify all the versions you want to uninstall.

It is always a good that you install node using nvm and uninstall using nvm rather than brew .

This solution worked for me.

Additional Commands

  • which node to know the path of node installed in your system. You can rm this directory to uninstall node manually. Then you may need to adjust the PATH file accordingly.
板凳
0

First of all, you need to deactivate node: (mac) after install new node version.

nvm deactivate

This is removed /Users/user_name/.nvm/*/bin from $PATH

And after that node was updated

node --version
v10.9.0
地板
0

If you're unable to locate node just run whereis node and whereis npm and whereis nvm and you can remove the listed directories as needed.

You'll also need to entire close your terminal and reopen it for changes to take effect.

4楼
-80

(server: ubuntu 14)

1.) install nvm (node version manager) https://github.com/creationix/nvm

2.) nvm install node

3.) npm -v (inquire npm version => 3.8.6)

4.) node -v (inquire node version => v6.0.0)

0
votes
answers
28 views
+10

錯誤,當我寫「流星故宮安裝」

0

我得到運行我的流星應用錯誤,當我寫「流星故宮安裝」

C:UsersconnectDesktophelp-er.meteorlocaluildprogramsserveroot.js:467 
W20171125-17:34:04.961(2)? (STDERR) }).run(); 
W20171125-17:34:04.961(2)? (STDERR) ^
W20171125-17:34:04.962(2)? (STDERR) 
W20171125-17:34:04.962(2)? (STDERR) Error: The babel-runtime npm package could not be found in your node_modules 
W20171125-17:34:04.963(2)? (STDERR) directory. Please run the following command to install it: 
W20171125-17:34:04.963(2)? (STDERR) 
W20171125-17:34:04.963(2)? (STDERR) meteor npm install --save babel-runtime 
W20171125-17:34:04.964(2)? (STDERR) 
W20171125-17:34:04.964(2)? (STDERR)  at babel-runtime.js (packagesabel-runtime.js:36:9) 
W20171125-17:34:04.965(2)? (STDERR)  at fileEvaluate (packagesmodules-runtime.js:343:9) 
W20171125-17:34:04.965(2)? (STDERR)  at require (packagesmodules-runtime.js:238:16) 
W20171125-17:34:04.965(2)? (STDERR)  at packagesabel-runtime.js:155:15 
W20171125-17:34:04.966(2)? (STDERR)  at packagesabel-runtime.js:166:3 
W20171125-17:34:04.966(2)? (STDERR)  at infos.forEach.info (C:UsersconnectDesktophelp-er.meteorlocaluildprogramsserveroot.js:414:13) 
W20171125-17:34:04.966(2)? (STDERR)  at Array.forEach (<anonymous>) 
W20171125-17:34:04.969(2)? (STDERR)  at C:UsersconnectDesktophelp-er.meteorlocaluildprogramsserveroot.js:413:9 
W20171125-17:34:04.969(2)? (STDERR)  at C:UsersconnectDesktophelp-er.meteorlocaluildprogramsserveroot.js:463:5 
W20171125-17:34:04.970(2)? (STDERR)  at Function.run (C:UsersconnectDesktophelp-er.meteorlocaluildprogramsserverprofile.js:510:12) 

和以下錯誤,當出現以下錯誤消息,當我運行以下命令

meteor npm install --save babel-runtime 

錯誤:

npm ERR! Error while executing: 
npm ERR! C:Program FilesGitcmdgit.EXE ls-remote -h -t https://github.com/meteor/readable-stream.git 
npm ERR! 
npm ERR! fatal: Unable to find remote helper for 'https' 
npm ERR! 
npm ERR! exited with error code: 128 

npm ERR! A complete log of this run can be found in: 
npm ERR!  C:UsersconnectAppDataRoaming
pm-cache\_logs2017-11-25T15_36_26_586Z-debug.log 

日誌文件:

0 info it worked if it ends with ok 
1 verbose cli [ 'C:\Users\connect\AppData\Local\.meteor\packages\meteor-tool\1.6.0\mt-os.windows.x86_64\dev_bundle\bin\node.exe', 
1 verbose cli 'C:\Users\connect\AppData\Local\.meteor\packages\meteor-tool\1.6.0\mt-os.windows.x86_64\dev_bundle\lib\node_modules\npm\bin\npm-cli.js', 
1 verbose cli 'install', 
1 verbose cli '--save', 
1 verbose cli 'babel-runtime' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose npm-session f78dcd8e95220926 
5 silly install loadCurrentTree 
6 silly install readLocalPackageData 
7 http fetch GET 304 https://registry.npmjs.org/babel-runtime 786ms (from cache) 
8 silly pacote range manifest for [email protected]^6.26.0 fetched in 1568ms 
9 silly install loadIdealTree 
10 silly install cloneCurrentTreeToIdealTree 
11 silly install loadShrinkwrap 
12 silly fetchPackageMetaData error for [email protected]+https://github.com/meteor/readable-stream.git#d64a64aa6061b9b6855feff4d09e58fb3b2e4502 Error while executing: 
12 silly fetchPackageMetaData C:Program FilesGitcmdgit.EXE ls-remote -h -t https://github.com/meteor/readable-stream.git 
12 silly fetchPackageMetaData 
12 silly fetchPackageMetaData fatal: Unable to find remote helper for 'https' 
12 silly fetchPackageMetaData 
12 silly fetchPackageMetaData exited with error code: 128 
13 verbose stack Error: exited with error code: 128 
13 verbose stack  at ChildProcess.onexit (C:UsersconnectAppDataLocal.meteorpackagesmeteor-tool1.6.0mt-os.windows.x86_64dev_bundlelib
ode_modulesend-of-streamindex.js:39:36) 
13 verbose stack  at emitTwo (events.js:125:13) 
13 verbose stack  at ChildProcess.emit (events.js:213:7) 
13 verbose stack  at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) 
14 verbose cwd C:UsersconnectDesktophelp-er 
15 verbose Windows_NT 10.0.15063 
16 verbose argv "C:\Users\connect\AppData\Local\.meteor\packages\meteor-tool\1.6.0\mt-os.windows.x86_64\dev_bundle\bin\node.exe" "C:\Users\connect\AppData\Local\.meteor\packages\meteor-tool\1.6.0\mt-os.windows.x86_64\dev_bundle\lib\node_modules\npm\bin\npm-cli.js" "install" "--save" "babel-runtime" 
17 verbose node v8.8.1 
18 verbose npm v5.4.2 
19 error Error while executing: 
19 error C:Program FilesGitcmdgit.EXE ls-remote -h -t https://github.com/meteor/readable-stream.git 
19 error 
19 error fatal: Unable to find remote helper for 'https' 
19 error 
19 error exited with error code: 128 
20 verbose exit [ 1, true ] 

任何想法,爲什麼我得到這些錯誤?

+1

檢查你的日誌文件,它是有原因的 – wrangler

+0

@wrangler我不能,它告訴我,我的帖子主要是代碼,我必須把更多的細節,我不知道還有什麼可寫的 –

+0

@wrangler我將它添加爲文本 –

沙发
0
0

在Windows 10中以管理員身份在cmd shell中運行修復了類似的問題。

是越來越這是常規運行cmd shell

c:meteorsimple-todos>meteor npm install --save font-awesome 
npm ERR! Error while executing: 
npm ERR! C:Program FilesGitcmdgit.EXE ls-remote -h -t https://github.com/meteor/readable-stream.git 
npm ERR! 
npm ERR! fatal: Unable to find remote helper for 'https' 
npm ERR! 
npm ERR! exited with error code: 128 

npm ERR! A complete log of this run can be found in: 
npm ERR!  C:UsersmyuserAppDataRoaming
pm-cache\_logs2018-02-19T18_15_27_973Z-debug.log 

在CMD然後跑作爲管理員,它的工作

c:meteorsimple-todos>meteor npm i --save font-awesome 
+ [email protected] 
updated 1 package in 5.707s 
0
votes
answers
35 views
+10

在文本編輯器中編輯Package.Config時,Nuget Package Restore?

0

合併兩個項目時,我們需要Install-Package幾百次。一旦編輯了Package.config,Nuget支持包還原就不會執行。它的工作方式就像Node JS包的魅力一樣?在文本編輯器中編輯Package.Config時,Nuget Package Restore?

一旦編輯了package.config,爲什麼我們不能啓動Update-Package到 恢復所有包?

enter image description here

是它的繼任者DOTNET CLI支持?

沙发
0
0

雖然packages.config講述的NuGet的軟件包下載並解壓縮(針對目標框架),安裝包的引用的過程中也可以修改.csproj的文件。所以如果你在合併後只更新其中的一個,你會發現自己有麻煩。

這個機制的繼任者是PackageReferenceNuGet blog post),它取代packages.config,只需要列出引用的包和版本(甚至一些額外的MSBuild邏輯可以通過項目管理共享版本/包等使用)。但是,沒有可用的遷移工具,因此您需要卸載所有軟件包並添加所需的軟件包引用。一些NuGet功能也發生了變化 - 例如,對文件(=>複製到項目目錄中的文件)的支持已被刪除,可能仍然會被某些項目使用(例如,假定以這種方式獲取jQuery或其他JS庫的Web項目)。

25
votes
answers
25 views
+10

How can I update npm on Windows?

I tried this:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

...but it didn't work.

How do I do this on Windows?

沙发
+40

I was also facing similar issues. I followed below mentioned steps and it worked for me:

  • go to Windows > Start > Node.js

    • right click on Node.js command prompt
    • click on Run as administrator
  • ping registry.npmjs.org

  • npm view npm version

  • cd %ProgramFiles% odejs

  • npm install npm@latest

and npm updated successfully. Earlier I was trying for CMD and that was throwing error. may be some path issue that got resolved by running NodeJs Command Prompt. hope it'll work for you. try this.

板凳
+40

To install the updates, just download the installer from the Nodejs.org site and run it again. The new version of Node.js and NPM will replace the older versions.

是的,這在我的Windows 7個電腦上運行良好。謝謝 !!! - MiHawk於9月9日在5:01

這在我的Windows 10的情況下不起作用。我有npm v5.4.2和節點7.5.0。當我想安裝節點v9.0.0時,npm -v表示5.4.2而不是5.5.1,因為它應該是 - ИскренСтаниславов於11年7月7日在13:39

地板
+40

The easiest way I found so far to update Node.js is using Chocolatey. Use Chocolatey to install or update the latest version of Node.js on Windows:

Step 1: First, ensure that you already have Chocolatey installed. If not, use an administrative shell to install chocolatey through cmd.exe or PowerShell.exe. For more information, visit: https://chocolatey.org/docs/installation

Step 2: Install with cmd.exe. Run the following command:

@"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateyin"

To install with PowerShell.exe, visit: https://chocolatey.org/docs/installation

Step 3: Install or Update with following commands on cmd.exe (on administrative mode)

To Install Node.js: cinst nodejs.install

To Update Node.js: cup nodejs.install

4楼
+30

OK guys, I read (tried on Windows) all the previous stuff and all of these answers have their own disadvantages.

For the best way to update Node.js (at least for me), go to https://nodejs.org/en/ Then download the last version and install it in same folder you installed the previous version in - 1 min and it's done. You don't need to remove any old files.

Then update npm typing in cmd: npm install --save latest-version

這不會更新npm - Jatin於2017年4月5日在10:26

也許在嘗試其他解決方案時我不小心更新了npm。要更新它,請輸入cmd:npm install --save latest-version - Vasyl Gutnyk 2017年4月5日在11:01

有時候我還是問自己為什麼要使用Windows。感謝您的簡單解決方案。 - Yuri Ramos於2017年4月29日21:30

5楼
+30

For NodeJS

Download required node version msi from here and install

for Npm

Run PowerShell as Administrator

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install -g npm-windows-upgrade
npm-windows-upgrade

哎呀我很確定你真正需要的就是這行res.header(“Access-Control-Allow-Origin”,“*”); - thisissami 17年7月7日在19:26

6楼
+20

follow these steps for window 10 or window 8

  • press WIN + R and type cmd and enter
  • npm i -g npm@next
  • npm i -g npm@next OR npm i -g node@{version}
  • Remove environment path C:Program Files odejs from envrionment variable PATH.
  • type refreshenv in cmd

Now you will have your new version which you installed.

Note: If you don't remove path. You will see the previous version of node.

7楼
+20

Powershell does not execute npm directly, I suggest using

.
pm install -g npm-windows-upgrade
.
pm-windows-upgrade

and it failed with:

You wanted to install npm 6.1.0, but the installed version is 3.10.10.

A common reason is an attempted "npm install npm" or "npm upgrade npm". As of today, the only solution is to completely uninstall and then reinstall Node.js. For a small tutorial, please see http://aka.ms/fix-npm-upgrade.

Please consider reporting your trouble to http://aka.ms/npm-issues.

http://aka.ms/fix-npm-upgrade <-- this is a dead link

8楼
+10

You can use these commands:

npm cache clean
npm update -g [package....]

If you are upgrading from a previous version of node, then you will want to update all existing global packages. You can also specify the package name to be updated.

9楼
+10

This might help someone. Neither "npm-windows-upgrade" nor the installer alone did it for me. Powershell was still using an older version of node and npm.

So this is what I did (worked for me): 1. Download the latest installer from nodejs.org. Install node. It will update your node; everywhere (Powershell, cmd etc.). 2. Install the npm-windows-upgrade package (npm install -g npm-windows-upgrade) and run npm-windows-upgrade.

I didn't uninstall anything and didn't set any paths.

“Powershell仍在使用舊版本的節點和npm。” 您可能通過修改路徑或運行npm i -g npm來執行其他更新方法。如果您將來遇到任何問題,那麼您必須這樣做:github.com/felixrieseberg / ... - Robert Baker 2016年8月31日19:04

10楼
+10

In my case, I discovered that I had two copies of Node.js installed. One under "C:Program Files odejs" and another under "C:Program Files (x86) odejs".

只需選擇一個並保持一致。如果你在某個家庭風格的地方工作,請使用它。--Alan B 2015年3月16日16:32

不幸的是,樣式是個人偏好,並且可能太昂貴,無法在沒有專用代碼所有者的情況下在多個團隊的大型代碼庫中強制執行。總是有更重要的事情要照顧而不是字符串vs String。這讓我們回到了“生活中更重要的事情” - aiodintsov 2016年2月24日6:51

這絕對是一種偏好; 例如:我更喜歡使用short,int,ushort,uint而不是Int16等。主要是因為這是我學習的方式。當然,對於那些經驗不足的人來說,Int16更容易理解。+1來自我! - PerpetualJ 1月2日19:18

11楼
0

This is what worked for me.

  1. Open a local folder other than the one in which nodejs is installed.
  2. Install npm in that folder with command npm install npm
  3. Navigate to the folder containing node js. (C:Program Files odejs ode_modules)
  4. Delete the npm folder and replace it with the npm and bin folders in the local folder.
  5. Run npm -v. Now you would get updated version for npm.

Note: I tried installing npm directly in "C:Program Files odejs ode_modules" but it created errors.

你也寫代碼如下:Int32 i = 1; 而不是int i = 1; ?似乎不一致,當它可用時不使用字符串別名。 - bytedev 2013年1月28日10:49

@nashwan:實際上,是的,我確實使用Int32 i = 1; 不是int i = 1; 我發現前者對我的意圖更具可讀性:即我想要一個32位有符號整數。 - NotMe 2013年2月15日17:30

嗯,我想這完全取決於開發人員是否認為他們正在編寫C#代碼(字符串)或.NET代碼(String)。我個人認為我正在編寫C#(而且它是使用.NET的C#)。 - bytedev 2014年4月15日13:09

@Alex:我的觀點是,我更喜歡在編碼中非常具體,以消除歧義。 - NotMe 2015年4月27日2:56

在頻譜的絕對另一端,我幾乎總是在15:38使用2016年3月18日的變量

12楼
0
  1. Start
  2. Search for windows powershell
  3. Right click and run as administrator
  4. Type: where.exe node (returns the path of node.exe in your system. Copy this)
  5. wget https://nodejs.org/download/release/latest/win-x64/node.exe -OutFile 'PATH-OF-NODE.EXE_WHICH_YOU_COPIED_JUST_NOW'
  6. To check if it has worked, go to your Git bash/Normal command prompt and type: node -v
  7. Here you can find the current version of node: https://nodejs.org/en/blog/release/

Jeffrey Richter建議在所有情況下使用CLR類型(通過C#進行CLR)以避免這裡發生的混亂。 - 喬什於08年10月18日17:02

顯然,無論你使用S還是s,它都會引起這個問題,所以向下投票給Richter。;) - 布拉德威爾遜08年10月18日17:17

Richter意味著字符串不應該是一個選項 - 微軟不應該使用該語言。你不能低報里希特 - 他是一個傳奇!:) - Joe Ratzer 08年10月18日19:23

公平點Jon,但我恰好在這一點上同意Richter關於String的觀點。是的,我完全同意 - 通過C#CLR非常棒! - Joe Ratzer 08年10月18日19:51

“string”與“String”不同。是指“System.String”。因此,如果您使用“字符串”,您必須使用“使用系統”來包含命名空間 - ThiagoAlves 2011年12月3日在16:41

10
votes
answers
12 views
+10

Error installing node-gyp on ubuntu

npm http 200 https://registry.npmjs.org/weak/-/weak-0.2.2.tgz
npm http GET https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/bindings

> weak@0.2.2 install node_modules/weak
> node-gyp rebuild

Traceback (most recent call last):
  File "/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py", line 18, in <module>
    sys.exit(gyp.script_main())
AttributeError: 'module' object has no attribute 'script_main'
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:337:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Linux 3.11.0-15-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"

gyp ERR! node -v v0.10.15
gyp ERR! node-gyp -v v0.12.1
gyp ERR! not ok 
npm ERR! weak@0.2.2 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the weak@0.2.2 install script.
npm ERR! This is most likely a problem with the weak package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls weak
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.11.0-15-generic
npm ERR! command "node" "/usr/bin/npm" "install" "weak@0.2.2"
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.3.23
npm ERR! code ELIFECYCLE

npm ERR! not ok code 0

I don't have a direct dependency on weak or node-gyp but I guess it is required by my other dependencies (express,phantom,ejs,aws-sdk,moment). Anyone faced such an issue and was able to fix?

沙发
+30

在嘗試安裝維基媒體擴展數學類時,我在Ubuntu 16.04上遇到了這個問題。

我嘗試了所有建議但沒有任何工作,直到我做了:

  sudo apt-get install librsvg2-2 librsvg2-dev  
     
			
        
板凳
+30

在Ubuntu 18上,我必須安裝所需的構建庫以使其正常工作

  sudo apt-get install build-essential  
     
			
        
地板
+20

在Ubuntu 10.04上,安裝libicu解決了我的問題。

sudo apt-get install libicu-dev

4楼
+10

在Fedora 20上,重新安裝gyp為我修復了這個問題。

  sudo yum重新安裝gyp  
     
			
        
5楼
+10

以下是在Ubuntu系統上成功安裝node-gyp的步驟:

1.首先,使用以下命令在Ubuntu中安裝“make”構建工具: < pre> sudo apt-get update&amp;&amp; sudo apt-get install build-essential software-properties-common -y;

2。然後,您需要安裝適當的C / C ++編譯器工具鏈。我們將使用以下命令在此安裝GCC:

  sudo add-apt-repository ppa:ubuntu-toolchain -r / test -y&amp;&amp; sudo apt-get update&amp;&amp; sudo apt-get install gcc-snapshot -y&amp;&amp; sudo apt-get update&amp;&amp; sudo apt-get install gcc-6 g ++  -  6 -y&amp;&amp; sudo update-alternatives --install / usr / bin / gcc gcc / usr / bin / gcc-6 60 --slave / usr / bin / g ++ g ++ / usr / bin / g ++  -  6&amp;&amp; sudo apt-get install gcc-4.8 g ++  -  4.8 -y&amp;&amp; sudo update-alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 60 --slave / usr / bin / g ++ g ++ /usr/bin/g++-4.8;   

3。安裝python 2.7版本。(注意:node-gyp不支持Python 3)。

  sudo apt update sudo apt upgrade sudo apt install python2.7 python-pip   

4。最後安裝,node-gyp npm包:

  npm install -g node-gyp   

其他但不重要: 如果你有任何與atom-gyp相關的原子鍵盤佈局問題,那麼再安裝以下一個包:

  sudo apt-get install libxkbfile-dev   

多數民眾贊成!它現在應該工作正常。

>仔細檢查你拼寫psycopg吧哈!那是我的錯。我差點兒瘋了。 - Ramchandra Apte 2015年1月17日6:29

6楼
-10

我已經安裝了 build-essential 我只需要運行:

  sudo apt install python  
     
			
        

雖然OP想要使用apt來安裝,但我仍然更喜歡使用pip / conda來管理Python包。 - jonnybazookatone 2016年6月13日17:24

1119
votes
answers
27 views
+10

How to use package installed locally in node_modules?

How do I use a local version of a module in node.js. For example, in my app, I installed coffee-script:

npm install coffee-script

This installs it in ./node_modules and the coffee command is in ./node_modules/.bin/coffee. Is there a way to run this command when I'm in my project's main folder? I guess I'm looking for something similar to bundle exec in bundler. Basically, I'd like to specify a version of coffee-script that everyone involved with the project should use.

I know I can add the -g flag to install it globally so coffee works fine anywhere, but what if I wanted to have different versions of coffee per project?

up vote 490 down vote accepted favorite
沙发
+4900
+50

更新:正如Seyeong Jeong在下面的回答中指出的那樣,自從npm 5.2.0開始,你可以使用 npx [command] ,這樣更方便。

5.2.0之前版本的OLD ANSWER

放置

  ./ node_modules / .bin   

進入你的PATH只有當你的當前工作目錄是你的項目目錄結構的根目錄(即 node_modules 的位置)時它才有效

與您的工作目錄無關,您可以使用

  npm bin   

獲取本地安裝的二進製文件的路徑。執行本地安裝的咖啡二進制獨立於您在項目目錄層次結構中的位置,您可以使用此bash構造

  PATH = $(npm bin):$ PATH coffee   

I別名為npm-exec

  alias npm-exec ='PATH = $(npm bin):$ PATH'  

所以,現在我可以< / p>

  npm-exec coffee   

運行正確的咖啡副本,無論我在哪裡

  $ pwd /用戶/常規/ project1 $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd lib / $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個咖啡/Users/regular/project2/node_modules/.bin/coffee   PATH = $(npm bin):$ PATH coffee   

我將此別名為npm-exec

  alias npm-exec ='PATH = $(npm bin):$ PATH'  

所以,現在我可以

  npm-exec coffee   

運行正確的咖啡副本無論我在哪裡

  $ pwd / Users / regular / project1 $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd lib / $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個咖啡/Users/regular/project2/node_modules/.bin/coffee   PATH = $(npm bin):$ PATH coffee   

我將此別名為npm-exec

  alias npm-exec ='PATH = $(npm bin):$ PATH'  

所以,現在我可以

  npm-exec coffee   

運行正確的咖啡副本無論我在哪裡

  $ pwd / Users / regular / project1 $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd lib / $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個咖啡/Users/regular/project2/node_modules/.bin/coffee  別名npm-exec ='PATH = $(npm bin):$ PATH'  

所以,現在我可以

  npm-exec coffee   

運行正確的咖啡副本,無論我在哪裡

  $ pwd / Users / regular / project1 $ npm-exec哪個咖啡/用戶/常規/ project1 / node_modules / .bin / coffee $ cd lib / $ npm-exec哪個coffee /Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個coffee / Users / regular / project2 / node_modules /.bin/coffee  別名npm-exec ='PATH = $(npm bin):$ PATH'  

所以,現在我可以

  npm-exec coffee   

運行正確的咖啡副本,無論我在哪裡

  $ pwd / Users / regular / project1 $ npm-exec哪個咖啡/用戶/常規/ project1 / node_modules / .bin / coffee $ cd lib / $ npm-exec哪個coffee /Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個coffee / Users / regular / project2 / node_modules /.bin/coffee  $ pwd / Users / regular / project1 $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd lib / $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個咖啡/Users/regular/project2/node_modules/.bin/coffee  $ pwd / Users / regular / project1 $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd lib / $ npm-exec哪個咖啡/Users/regular/project1/node_modules/.bin/coffee $ cd~ / project2 $ npm-exec哪個咖啡/Users/regular/project2/node_modules/.bin/coffee  
     
			
        
+3190
將檢查&lt; command&gt; 是否存在於 $ PATH 或本地項目二進製文件中,然後執行該操作。

調用 npx&lt ; &lt; command&gt; 調用它。完成後,安裝的軟件包將不會出現在全局文件中的任何位置,因此您不必長期擔心污染問題。您可以通過提供 - no-install 選項來阻止此行為。

對於 npm&lt; 5.2.0 ,您可以通過運行以下命令手動安裝 npx 包:

我不喜歡安裝第三方全局npm包,而npm和package.json提供幾乎相同的功能。 - guneysus 18年3月28日6:27

如果“Path必須是一個字符串。收到未定義”消息出現,這裡有一個修復:github.com/zkat/npx/issues/144#issuecomment-391031816 - Valeriy Katkov 18年8月2日15:56

這個答案很好。但我只是想說npx是蹩腳的。應該是npm run或npm exec或者其他東西。 - 威廉·恩特里肯18年10月25日14:15

+870

使用 npm bin 命令獲取項目的node modules / bin目錄

  $ $(npm bin)/&lt; binary-name&gt; [args]   

例如

  $ $(npm bin)/ bower install  
     
			
        

我喜歡這個簡單而通用的解決方案。使別名看起來沒必要。 - 馬特蒙塔格2015年5月31日22:13

似乎是下一個最好的解決方案,優雅和安全比必須導出PATH =“./ node_modules / .bin:$ PATH” - jontsai 2015年9月9日在23:16

@ inf3rno命令是$(npm bin)/ jasmine,而不是節點$(npm bin)/ jasmine(你可能想出來但是為其他人澄清)。 - jassa 2016年8月19日19:32

這不是一個糟糕的解決方案,但它不能在帶有$的標準Windows命令行上運行。將它放在package.json腳本部分是一種更好的方法,因為它更兼容。 - Timothy Gonzalez 2016年9月30日22:26

+730

使用 npm run [-script]&lt; script name&gt;

使用npm將bin包安裝到本地 ./ node_modules 之後目錄,修改 package.json 以添加&lt; script name&gt; ,如下所示:

  $ npm install --save learnyounode $ edit packages .json&gt;&gt;&gt; 在packages.json ...“scripts”:{“test”:“echo”錯誤:沒有測試指定“&amp;&amp; exit 1”,“learnyounode”:“learnyounode”},... $ npm run learnyounode < / code>  

如果npm install有一個--add-script選項或者某個東西,或者npm run在沒有添加腳本塊的情況下運行會很好。<

我發現在處理項目中的多個開發人員時這種方法更加統一 - 它避免了在本地配置任何東西的需要......你只需要安裝npm然後就可以訪問你的dev依賴項了。唯一的小問題是你需要npm運行eslint(或其他)。您可以創建一個名為“start”的腳本來運行gulp,這樣您只需要鍵入npm start來啟動您的開發服務器。非常酷的東西,沒有bash善良,所以你的Windows朋友仍然喜歡你。:) - jpoveda 2015年9月21日21:28

在你的路徑上添加一個別名來放置$(npm bin)很聰明,但這對沒有本地配置的人有用的事實贏得了我的心 - Conrad.Dean 2016年3月25日12:37

這需要更多的讚成!之後將args傳遞給你的腳本 - 例如:npm run learnyounode - --normal-switches --watch -d * .js - ptim Jun 16 '16 at 8:53

我也發現這是最好的解決方案。這裡有一個深入的解釋:lostechies.com/derickbailey/2012/04/24/ - adampasz 2016年7月24日4:41

+420

使用 npm-run

來自自述文件:

npm-run

查找&amp; 從node_modules運行本地可執行文件

npm生命週期腳本可用的任何可執行文件都可用於 npm-run

用法
 < code> $ npm install mocha#mocha安裝在./node_modules $ npm-run mocha test / *#使用本地安裝的mocha可執行文件  

安裝
  $ npm install -g npm-run  
     
			
        

不再,請參閱上面提到的npx ... stackoverflow.com/a/45164863/3246805 - tj於2017年9月1日19:00

+400

更新:我不再推薦這種方法,既出於上述安全原因,也不再推薦使用較新的 npm bin 命令。原始答案如下:

如您所知,任何本地安裝的二進製文件都在 ./ node_modules / .bin 中。為了始終在此目錄中運行二進製文件而不是全局可用的二進製文件(如果存在),我建議您先在路徑中輸入 ./ node_modules / .bin

  export PATH =“./ node_modules / .bin:$ PATH”  

如果你把它放在?/ .profile coffee 將始終為 ./ node_modules / .bin / coffee (如果可用),否則為

這可能是最好的解決方案。我還在我的項目中創建了一個名為“watch”的bash腳本:./ node_modules / .bin / coffee --output lib / --compile --bare --watch src - typeoneerror 12年3月13日18:27

威爾羅賓遜,危險!在$ PATH中使用相對路徑會打開一個與行星大小相當的安全漏洞,特別是如果你把它們放在前面作為第一個項目。如果你所在的目錄是可寫的(比如/ tmp中的某個地方),任何進程或用戶都可以通過在那裡放置普通命令的惡意版本(如ls,cp等)來劫持你的會話。這些可能會產生捕獲密碼的“隱形”​​子shell,等等。 - 確認2014年2月28日20:40

只會在根目錄中工作,而不能在其他地方工作。別名npm-exec ='PATH = $(npm bin):$ PATH'是滑動的。 - 2015年5月5日16:21的寡頭

如果你不把它作為你的PATH中的第一件事,但最後一個(使用$(npm bin)形式),這有多糟糕?所以他們不能覆蓋你現有的東西,而且無論PATH var如何,你都會信任npm bin目錄中的可執行文件; 威脅模型是否會a)惡意某人訪問您的文件系統,b)他們添加的名稱與這些系統工具接近的可執行文件,以及c)您錯誤輸入?考慮到在使用npm安裝的程序時你已經信任外部可執行文件,試圖理解導致這種情況的場景。 - osdiab 2016年7月15日在1:24

你可以用別名做shell技巧,你可以手動路徑,這“工作”,但它不是很理想。 - killscreenmike 17年12月18日19:42

+220

PATH解決方案存在的問題是,如果將$(npm bin)放在.profile / .bashrc / etc中,它將被評估一次並永遠設置為首先評估路徑的目錄。如果相反,則修改當前路徑然後每次運行腳本時,您的路徑都會增長。

為了解決這些問題,我創建了一個函數並使用了它。它不會修改您的環境並且易於使用:

  function npm-exec {$(npm bin)/ $ @}   

這可以然後像這樣使用而不對環境做任何改變:

  npm-exec r.js&lt; args&gt;  
     
			
        

我喜歡這個!我只是在2015年9月9日23:20命名我的函數n - jontsai

這很棒!感謝分享。我在下面添加了一個魚殼版本。 - Leon li 17年5月19日16:49

+180

如果您想保留npm,那麼 npx 應該可以滿足您的需求。


< p>如果切換到紗線(facebook的npm替換)是你的選擇,那麼你可以調用:
  yarn yourCmd   

package.json將優先,如果沒有找到它將在 ./ node_modules / .bin / 文件夾中查看。

它還輸出它運行的內容:

  $ yarn tsc yarn tsc v0.27.5 $“/home/philipp/rate-pipeline/node_modules/.bin/tsc”  

所以你不必為 package.json 中的每個命令設置腳本。


如果在 package.json 中的 .scripts 中定義了腳本:

 “tsc”:“tsc”//每個命令腳本中定義的將從`。/ node_modules / .bin /`first   

yarn tsc 執行,相當於 yarn run tsc npm run tsc

  yarn tsc yarn tsc v0.27.5 $ tsc  yarn tsc 相當於 yarn run tsc  npm run tsc  
  yarn tsc yarn tsc v0.27.5 $ tsc  yarn tsc 相當於 yarn run tsc  npm run tsc  
  yarn tsc yarn tsc v0.27.5 $ tsc  
     
			
        

您可以將答案寫為答案,並接受答案。這樣,事情就會變得更有條理,很明顯你找到了自己的答案。 - strager 2010年8月11日19:28

+50

如果您希望PATH變量根據當前工作目錄正確更新,請將其添加到 .bashrc -equivalent的末尾(或者在定義 PATH ):

  __ OLD_PATH = $ PATH函數updatePATHForNPM(){export PATH = $(npm bin):$ __ OLD_PATH} function node-mode(){PROMPT_COMMAND = updatePATHForNPM} function node-mode- off(){unset PROMPT_COMMAND PATH = $ __ OLD_PATH}#取消註釋默認啟用節點模式:#node-mode   

每次渲染bash提示時,這可能會增加一個短暫的延遲(根據項目的大小,最有可能),因此默認情況下禁用它。

您可以通過運行 node-mode 在終端中啟用和禁用它。和 node-mode-off 分別。

+50

我總是使用與@guneysus相同的方法來解決這個問題,即在package.json文件中創建一個腳本並使用它運行npm run script-name。

然而,在最近幾個月我一直在使用 npx ,我喜歡它。

例如,我下載了一個Angular項目,我不想全局安裝Angular CLI。因此,安裝了npx,而不是使用全局角度cli命令(如果我已安裝它),如下所示:

  ng serve   

我可以做這來自控制台:

  npx ng serve   

+50

我更喜歡不依賴shell別名或其他包。

package.json scripts 部分添加一行簡單的行,你可以運行本地npm命令,如

npm run webpack

package.json

  {“scripts”:{“test”:“echo”錯誤:沒有測試指定“&amp;&amp;&amp; exit 1”,“webpack”:“webpack”},“devDependencies”:{“webpack”:“^ 4.1.1 “,”webpack-cli“:”^ 2.0.11“}}  
     
			
        
+20

zxc 就像nodejs的“bundle exec”。它類似於使用 PATH = $(npm bin):$ PATH

  $ npm install -g zxc $ npm install gulp $ zxc gulp / home / nathan / code / project1 / node_modules / .bin / gulp  
     
			
        
+20

相同@regular的接受解決方案,但魚殼味道

 如果不包含(npm bin)$ PATH設置PATH(npm bin)$ PATH結束 
     
			
        
+20

更新:如果你在最近的npm(版本> 5.2)

你可以使用:

  npx&lt; command&gt;   

npx node_modules

中查找 .bin 目錄中的命令舊答案:

對於Windows

將以下內容存儲在名為 npm-exec.bat 的文件中,並將其添加到%PATH%< / code>

  @echo off set cmd =“npm bin”FOR / F“tokens = *”%% i IN('%cmd%')DO SET modules = %% i“ %modules%“%*   

用法

然後你可以像 npm-exec&lt; command&gt;那樣使用它。&LT;為arg0&GT; &LT; ARG1&GT; ...

例如

要執行安裝在本地node_modules目錄中的 wdio ,請執行:

  npm-exec wdio wdio.conf.js   

即它將運行ode_modules.binwdio wdio.conf.js

傳遞多個參數時,這不起作用。例如,npm-exec gulp - OK999 2016年10月4日15:55

@ OK9999我確定一些小的修改將允許傳遞參數(因為當你在這里傳遞它時,它會引用“”); 我建議將gulp文件從bin複製粘貼到你的項目根目錄(文件需要一些修改,但它只能在不編寫新代碼的情況下工作) - Dheeraj Bhaskar 2016年10月11日18:45

是的,我最終這樣做了。node_modules文件夾必須位於gulpfile存在的文件夾中 - OK999 2016年10月11日18:53

+10

我遇到了同樣的問題而且我並不特別喜歡使用別名(建議常規),以及如果您不喜歡它們,那麼這是我使用的另一種解決方法,您首先必須創建一個微小的可執行bash腳本,例如 setenv.sh

 # !/ bin / sh#將本地node_modules bin添加到路徑export PATH =“$(npm bin):$ PATH”#執行命令exec的其餘部分“$ @”  

然後,您可以使用以下命令使用本地 / bin 中的任何可執行文件:

  ./ setenv.sh&lt; command&gt; ./setenv.sh 6to5-node server.js ./setenv.sh grunt   

如果您在package.json中使用 scripts ,那麼:

  ...,scripts:{'start':'。/ setenv.sh&lt ;命令&GT;' }  
     
			
        

package.json腳本不需要此setenv腳本。在執行npm run {scripts}時,npm已經將本地node_modules / .bin目錄添加到路徑中。 - jasonkarns於2015年2月6日19:39

+10

我很想知道這是不是一個不安全/壞主意,但在考慮之後我沒有看到問題:

修改Linus不安全的解決方案將其添加到結束,使用 npm bin 查找目錄,並且當父代中存在 package.json 時,使腳本只調用 npm bin (為速度而言,這是我為 zsh 提出的:

  find-up(){path = $(pwd)while [[“$ path” !=“”&amp;&amp; -e“$ path / $ 1”]]; do path = $ {path%/ *} done echo“$ path”} precmd(){if [“$(find-up package.json)”!=“”]; 然後new_bin = $(npm bin)if [“$ NODE_MODULES_PATH”!=“$ new_bin” ]。然後導出PATH = $ {PATH%:$ NODE_MODULES_PATH}:$ new_bin export NODE_MODULES_PATH = $ new_bin if else if [“$ NODE_MODULES_PATH”!=“”]; 然後導出PATH = $ {PATH%:$ NODE_MODULES_PATH} export NODE_MODULES_PATH =“”fi fi}   

對於 bash ,而不是使用 precmd < / code> hook,你可以使用 $ PROMPT_COMMAND 變量(我沒有測試過這個但是你明白了):

  __ add-node-to-path (){if [“$(find-up package.json)”!=“”]; 然後new_bin = $(npm bin)if [“$ NODE_MODULES_PATH”!=“$ new_bin”]; 然後導出PATH = $ {PATH%:$ NODE_MODULES_PATH}:$ new_bin export NODE_MODULES_PATH = $ new_bin if else if [“$ NODE_MODULES_PATH”!=“”]; 然後導出PATH = $ {PATH%:$ NODE_MODULES_PATH} export NODE_MODULES_PATH =“”fi fi} export PROMPT_COMMAND =“__ add-node-to-path” 
     
			
        

將npm bin添加到$ PATH的末尾可能無法執行用戶期望的內容:基本上是另一個可執行文件,但更可能是另一個版本的全局安裝包! - LoganMzz於17年11月8日13:46

+10

您也可以使用direnv並僅在工作文件夾中更改$ PATH變量。

  $ cat .envrc&gt; export PATH = $(npm bin):$ PATH  
     
			
        

與direnv一起使用。direnv.net - kuboon 17年1月12日在9:31

僅供參考,你可以檢查請求對象並查看,但我是一個偽君子,並在此處找到它。 - 傑森賽布林2017年1月7日0:00

+10

將此腳本添加到 .bashrc 然後你可以在本地調用 coffee 或任何其他內容。這對您的筆記本電腦很方便,但不要在您的服務器上使用它。

  DEFAULT_PATH = $ PATH; add_local_node_modules_to_path(){NODE_MODULES ='。/ node_modules / .bin'; if [-d $ NODE_MODULES]; 然後PATH = $ DEFAULT_PATH:$ NODE_MODULES; 否則PATH = $ DEFAULT_PATH; fi} cd(){builtin cd“$ @”; add_local_node_modules_to_path; add_local_node_modules_to_path;   

note :此腳本生成 cd 命令的別名,並在每次調用 cd 後檢查 node_modules / .bin 並將其添加到 $ PATH

note2 :您可以將第三行更改為 NODE_MODULES = $(npm bin); 但這會使 cd 命令太慢。

使用$(npm bin)而不是硬編碼./node_modules/.bin。 - bfontaine 17年1月25日17:27

那講得通。我已經更新了上面的代碼。 - Tsutomu Kawamura 2017年1月26日2:12

嗯,$(npm bin)似乎太慢,無法使用每個cd命令。我已經恢復了代碼並為其添加了註釋。 - Tsutomu Kawamura 2017年1月26日2:28

+10

我是 Windows 用戶,這對我有用:

  //首先設置一些變量 - 即替換為“xo”D:項目OOT&GT; set xo =“./ node_modules / .bin /”//接下來,使用它D:project oot&gt; %xo%/ bower install   

祝你好運。

+10

對於Windows,請使用:

  / * cmd into“node_modules”文件夾* /“%CD%.bingrunt” -  version  
     
			
        
+10

如果您使用 fish shell 並且出於安全原因不想添加到 $ path 我們可以添加以下函數來運行本地節點可執行文件。

  ###在node_module / .bin目錄下運行可執行文件功能n set -l npmbin(npm bin)set -l argvCount(count $ argv)switch $ argvCount case 0 echo請指定本地節點可執行作為第一個參數情況1#對於一個參數,我們可以直接eval $ npmbin / $ argv case'*'set --local executable $ argv [1]#對於2個或更多個參數我們無法在$ npmbin之後直接追加/因為fish會在起始字符串後應用每個數組元素:$ npmbin / arg1 $ npmbin / arg2 ...#這就是魚如何互操作數組。set --erase argv [1] eval $ npmbin / $ executable $ argv end end   

現在你可以運行:

n coffee

或更多參數如:

n browser-sync --version

注意,如果你是 bash 用戶,然後利用bash的 $ @ 來獲取@ Bob9630答案,這在 fishshell 中不可用。 請注意,如果您是 bash 用戶,則可以通過利用bash的 $ @ 來獲取@ Bob9630答案,這在 fishshell 中不可用。 請注意,如果您是 bash 用戶,則可以通過利用bash的 $ @ 來獲取@ Bob9630答案,這在 fishshell 中不可用。

-90

在package.json中包含coffee-script以及每個項目所需的特定版本,通常如下所示:

 “dependencies”:{“coffee-script”:“&gt; = 1.2 .0“  

然後運行npm install以在每個項目中安裝依賴項。這將安裝指定版本的coffee-script,該腳本可在本地訪問每個項目。

是的,就像我在問題中所說的那樣,我做得那麼遠。除了./node_modules/.bin/coffee之外,我如何專門調用我項目中的那個? - typeoneerror 12年3月13日9:47

如果您在項目的主文件夾中運行帶有package.json的npm install,則該文件夾中應該有一個./node_modules/.bin/coffee文件夾。使用./node_modules/coffee-script/bin/coffee將運行本地版本的咖啡,而只是運行咖啡將運行全局安裝。如果您在此項目文件夾中的另一個路徑中安裝了另一個版本的咖啡,則可以使用./path/to/this/installation/coffee訪問它。 - almypal 2012年3月13日10:42

這不適合我。我正在嘗試使用“svgo”,它只在全局安裝時才有效。我已經嘗試過npm install svgo以及帶有package.json的npm install。兩種方法都“成功”安裝,但“svgo”命令仍然無法使用。 - Ryan Wheale 2013年4月5日4:37

Grunt以巧妙的方式使用它,恕我直言,其他包也應如此。首先在全局安裝grunt-cli軟件包,然後在項目目錄中安裝grunt軟件包的任何(修改)版本,然後在運行grunt時,它將使用此本地版本。 - 確認2014年2月28日21:00

0
votes
answers
17 views
+10

在Mac上安裝npm高sierra

2

我想在mac high sierra上安裝node.js和npm。
https://gist.github.com/rcugut/c7abd2a425bb65da3c61d8341cd4b02d
我成功通過自制軟件安裝node.js,但無法安裝NPM
我該怎麼辦?在Mac上安裝npm高sierra


Hoyeongui-MacBook-Air:~ hoyeongkim$ node -v 
v8.9.1 
Hoyeongui-MacBook-Air:~ hoyeongkim$ curl -L https://www.npmjs.com/install.sh | sh 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 6255 100 6255 0  0 2628  0 0:00:02 0:00:02 --:--:-- 2629 
tar=/usr/bin/tar 
version: 
bsdtar 2.8.3 - libarchive 2.8.3 
install [email protected] 
fetching: https://registry.npmjs.org/npm/-/npm-5.5.1.tgz 
module.js:538 
    throw err; 
    ^

Error: Cannot find module '/private/var/folders/jn/6wwl3xfd25x94ky333nhcxb80000gn/T/npm.58735/package/bin/read-package-json.js' 
    at Function.Module._resolveFilename (module.js:536:15) 
    at Function.Module._load (module.js:466:25) 
    at Function.Module.runMain (module.js:676:10) 
    at startup (bootstrap_node.js:187:16) 
    at bootstrap_node.js:608:3 
added 1 package and removed 1 package in 0.846s 
/usr/local/Cellar/node/8.9.1/bin/npm -> /usr/local/Cellar/node/8.9.1/lib/node_modules/npm/bin/npm-cli.js 
/usr/local/Cellar/node/8.9.1/bin/npx -> /usr/local/Cellar/node/8.9.1/lib/node_modules/npm/bin/npx-cli.js 
+ [email protected] 
updated 1 package in 1.687s 
It worked 

Hoyeongui-MacBook-Air:~ hoyeongkim$ npm 
-bash: npm: command not found 
+0

HTH HTTPS ://gist.github.com/DanHerbert/9520689 –

+0

@MarkSetchell T hank,但它不起作用.. –

+0

爲什麼你不想通過Homebrew安裝npm?這是最簡單的解決方案:'brew install node'。 – bfontaine

沙发
0
2

我在詳細看了這個。我安裝node自制軟件並設置我的路徑有/usr/local/bin在一開始,所以我拿起所有自制軟件二進制文件。

所以,如果我檢查node其二進制和哪個版本,我看到我運行了一個由自制安裝:

which node 
/usr/local/bin/node 

,它是版本自制安裝:

node -v 
v8.9.1 

自制軟件安裝node也自動安裝npm只是如出一轍:

which npm 
/usr/local/bin/npm 

而且也是當前:

npm -v 
5.5.1 

所以,我不知道爲什麼你想從源代碼安裝npm - 只要使用由自制提供的一個。


如果我看有自制的安裝node相關的文件,我可以看到它包括npm

brew ls node --verbose | grep 'npm$' 

樣本輸出

/usr/local/Cellar/node/8.9.1/etc/bash_completion.d/npm 
/usr/local/Cellar/node/8.9.1/libexec/bin/npm 
/usr/local/Cellar/node/8.9.1/libexec/lib/node_modules/npm/bin/npm 
1539
votes
answers
15 views
+10

install a previous version of a package

I used nvm to download node v0.4.10 and installed npm to work with that version of node.

I am trying to install express using

npm install express -g

and I get an error that express requires node version >= 0.5.0.

Well, this is odd, since I am following the directions for a node+express+mongodb tutorial here that used node v0.4.10, so I am assuming express is/was available to node v0.4.10. If my assumption is correct, how do I tell npm to fetch a version that would work with my setup?

up vote 1349 down vote accepted favorite
沙发
+13490
+50

If you have to install an older version of a package, just specify it

npm install <package>@<version>

For example: npm install express@3.0.0

You can also add the --save flag to that command to add it to your package.json dependencies, or --save --save-exact flags if you want that exact version specified in your package.json dependencies.

The install command is documented here: https://docs.npmjs.com/cli/install

If you're not sure what versions of a package are available, you can use:

npm view <package> versions

And npm view can be used for viewing other things about a package too. https://docs.npmjs.com/cli/view

我相信這將安裝最接近的匹配的主要版本,所以它可能不是你所期望的stackoverflow.com/a/22345808/1074400 - Aakil Fernandes 2015年6月17日18:33

@AakilFernandes如果指定確切的版本,將安裝確切的版本。如果指定語義版本範圍,則可能會得到非完全匹配。在這方面,安裝命令沒有什麼獨特之處。 - Bret Copeland 2015年6月20日18:49

npm查看 版本-json可以查看每個版本,避免使用許多版本的列表末尾的省略號。 - TheDarkIn1978 17年5月17日6:47

如果您使用npm install express@3.0.0,您將無法獲得3.0.0的確切版本,您將獲得最新的3.xx版本。要獲得特定版本,您必須使用npm install express@3.0.0 --save-exact。看到這篇博文:60devs.com/npm-install-specific-version.html - Patrick Hund 1月10日'18時間9:53

@PatrickHund不,npm install express@3.0.0將為您提供3.0.0版本。npm install express@^3.0.0會得到最新的3.xx --save-exact影響它寫入packages.json的方式,我在答案中已經介紹過了。另請注意, - save-exact必須與--save或--save-dev結合使用 - 僅靠它自己使用它是不夠的。 - Bret Copeland 18年1月25日18:48

+820

It's quite easy. Just write this, for example:

npm install -g npm@4.6.1

Or:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

感謝最新和下一個版本標籤! - 吉米阿達羅5月15日16:35

+670

First remove old version, then run literally the following:

npm install express@3.X

and for stable or recent

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

這是一個文字X還是一些數字版本號的替身? - Keith Thompson 2016年4月19日18:32

這是一個問題,也不是問題。我試過npm install express@3.X,它似乎工作。這是npm解析版本號的方式的功能還是意外? - Keith Thompson於2016年4月20日15:06

@KeithThompson是的,它是!呵呵,開個玩笑......這就是npm解析它的方式,請參閱:docs.npmjs.com/misc/semver#x-ranges-12x-1x-12- - gonz 2016年5月30日21:31

@gonz:所以這是一個字面上的X. - Keith Thompson於2016年5月30日21:34

我只是想解釋為什麼這對你有用。我不知道Saurabh的初衷或你想做什麼。3.X意味著> = 3.0且<4.0。 - gonz 2016年5月30日21:43

+400

In my opinion that is easiest and fastest way:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10

+10

npm install -g npm@version

in which you want to downgrade

npm install -g npm@3.10.10

但如果我需要它localy?我需要把--save嗎? - AlexNikonov 5月31日16:07

0

you can update your npm package by using this command:

npm install <package_name>@<version_number>

example: npm install yargs@12.02

0

You can use the following command to install a previous version of an npm package:

npm install packagename@version
-10

On Ubuntu you can try this command.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Specific version : sudo n 8.11.3 instead of sudo n stable

這是一個更有用的答案,因為輸出適合於編寫更大的命令而無需從一堆輸出中提取路徑。 - Adam Tolley於2017年3月31日22:12

Windows操作系統上的默認root是C:UsersYOUR_USER_NAMEAppDataRoaming pm ode_modules - Vincent Tang 3月26日'18在16:04

0
votes
answers
27 views
+10

「let-」只支持NG-模板元素

2

我試圖讓我的前端應用(Angular5.1.x)來運行,但是它停止由於模板語法錯誤:「let-」只支持NG-模板元素

"let-" is only supported on ng-template elements. (" 
</thead> 
<tbody> 
<template ngFor [ngForOf]="rows" [ERROR ->]let-rowz="$implicit" let- index="index"> 
<tr *ngIf="!(datePicker.onlyCurrentMonth && rowz[0].sec"):  
ng:///DatepickerModule/[email protected]:58 
    at syntaxError (compiler.js:485) 
    at TemplateParser.parse (compiler.js:24633) 
    at JitCompiler._parseTemplate (compiler.js:34442) 
    at JitCompiler._compileTemplate (compiler.js:34417) 
    at compiler.js:34318 
    at Set.forEach (<anonymous>) 
    at JitCompiler._compileComponents (compiler.js:34318) 
    at compiler.js:34188 
    at Object.then (compiler.js:474) 
    at JitCompiler._compileModuleAndComponents (compiler.js:34187) 

我認爲我需要遵循這個主題問題,指出我需要使用ngx-bootrap @ ngx-bootstrap @ 2.0.0-beta.8,但它不適用於那個或v.2.0.0-rc.0

https://github.com/valor-software/ngx-bootstrap/issues/3024

...任何幫助表示讚賞

+3

爲什麼不能你寫的NG-模板而不是模板? – Subash

+3

模板已棄用,應使用ng-template。 –

沙发
0
4

有在V2 +沒有<template>標籤,請不要全新安裝, 如果使用<template>已在angular 5.x.x被棄用目前

+0

感謝您的反饋valorkin,最後我不得不做一個'npm緩存清除 - 強制'以及它的工作。 –

+0

我刪除了我的節點模塊,做了'npm cache clear --force',我仍然有這個問題。使用'「ngx-bootstrap」:「^ 2.0.2」'和'「ngx-date-picker」:「0.0.24」'。 – BBaysinger

+0

刪除包鎖json文件,並再次執行它 – valorkin

板凳
0
1

ngx-bootstrap 1.x.x檢查是否已NGX-引導V2 + 檢查軟件包鎖定。所以你必須升級到ngx-bootstrap 2.X.X

執行以下升級

npm uninstall --save ngx-bootstrap 
npm cache clean -f 
npm install --save ngx-bootstrap