2017-02-23 63 views
3

在這裏學習NodeJs。問題是當我試圖尋找答案時,我沒有找到我要找的東西。可能是因爲這太基本或沒有問題。nodejs導入需求轉換

我正在與angular2的nodejs上工作。所以很自然,我有事情,如:

import { stuff } from 'some_module' 

但我想用具有的使用實例的包裝工作:

var stuff = require('some_module') 

顯然,當我用進口等我的代碼沒有工作否則我不會在這裏發帖。是因爲我做錯了什麼嗎?還是我運氣不好,使這個特定的模塊不能用於導入?當我看到require('some_stuff')的用法示例時,有人可以闡明如何編寫正確的導入語句,所以我可以使用從npm下載的其他模塊?

在此先感謝。

編輯: 所以我試圖NPM安裝requirejs --save。然後我寫了上面的require語句。但我得到一個404包...

+0

你的意思是你想使用要求的節點,對不對? –

+0

我想我的困惑是是否有相當於需要導入?或者我應該只在我的angular2組件中寫入「require」? – user691856

+0

基本上這兩件事情爲你做同樣的工作......你在使用ES6的更新語法的角度以及節點中使用ES5的更老的語法...(ES5和ES6是JS的版本名稱).. 。我的意見是你應該用更新的語法(你可以得到它與新版本的節點,即6.9或在舊版本使用巴貝爾) –

回答

2

您可以使用進口,但你必須運行你的應用與巴貝爾。

則必須將此行添加到您的package.json文件

"scripts": { 
    "start": "NODE_ENV=production node_modules/.bin/babel-node --presets 'es2015' src/server.js", 
    "build": "NODE_ENV=production node_modules/.bin/webpack -p" 
    }, 
    "dependencies": { 
    "babel-cli": "^6.11.4", 
    "babel-core": "^6.13.2", 
    "babel-loader": "^6.2.5", 
    "babel-preset-es2015": "^6.13.2" 
    }, 
    "devDependencies": { 
    "http-server": "^0.9.0", 
    "webpack": "^1.13.2", 
    "webpack-dev-server": "^1.14.1" 
    } 

的src/server.js文件是主文件位置

,然後用下面的命令

運行文件

npm run start

當你使用import { stuff } from 'module'; 然後你可以在你的程序中直接使用stuff()

但是當你用var stuff = require('module'); 那麼你需要做的stuff.stuff()在你的程序。

+0

哇有趣,如果是這種情況,那麼我需要返回並重構/更改我的代碼,一旦它被支持? – user691856

+0

是的,如果你喜歡。你可以從https://github.com/500tech/nodejs-express-es6/ –

0

有趣的是,原來的語法

var stuff = require('some_module')

工作不適合你。如果您的應用程序是從Angular CLI搭建的,那麼它應該支持這兩種導入,並且需要開箱即用的語句。

例如,我在這樣一個角2組件使用MSR

var MediaStreamRecorder = require('msr'); 
+0

中看到其他例子,當我需要的時候,我的lite服務器調試給了我指向的包上的404 ... I不記得我必須指定任何相對路徑的要求,如果它在node_modules文件夾中?我錯了嗎? – user691856