nodejs导入需要转换

Posted

技术标签:

【中文标题】nodejs导入需要转换【英文标题】:nodejs Import require conversion 【发布时间】:2017-07-13 09:54:24 【问题描述】:

在这里学习 NodeJ。问题是当我试图寻找答案时,我没有找到我想要的东西。可能是因为这太基本或没有问题。

我正在使用 angular2 开发 nodejs。所以很自然,我有这样的事情:

import  stuff  from 'some_module'

但我正在尝试使用具有以下用法示例的包:

var stuff = require('some_module')

显然,当我使用 import 等时,我的代码不起作用。否则我不会在这里发布。是因为我做错了什么吗?还是我运气不好,以至于这个特定的模块不能与导入一起使用?当我看到 require('some_stuff') 的用法示例时,有人可以说明如何编写正确的导入语句,以便我可以使用从 npm 下载的其他模块吗?

提前致谢。

编辑: 所以我尝试了 npm install requirejs --save。然后我写了上面的require语句。但我在包裹上收到 404...

【问题讨论】:

你的意思是你想在node中使用require,对吧? 我想我的困惑是是否存在与 require for import 的等价物?还是我应该在我的 angular2 组件中写“require”? 基本上这两件事都为你做同样的工作......你在 Angular 中使用 ES6 的新语法和在节点中你使用的是 ES5 的旧语法......(ES5 和 ES6 是JS 的版本名称)...我的意见是你应该使用更新的语法(你可以使用新版本的节点,即 6.9 或在旧版本上使用 babel) 不错,但我的导入语句对我不起作用。我在找到包裹时收到 404。具体来说,这是 googleapis 包。我尝试获取 requirejs 并像他们的用法示例一样使用它,但它仍然对我不起作用。 所以我正在从 'googleapis' 导入 google 【参考方案1】:

您可以使用 import,但您必须使用 babel 运行您的应用程序。

您必须将此行添加到您的 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()

【讨论】:

哇,很有趣,如果是这种情况,我是否需要返回并在支持后重构/更改我的代码? 是的,如果你喜欢的话。您可以从github.com/500tech/nodejs-express-es6 中获取其他示例【参考方案2】:

有趣的是原来的语法

var stuff = require('some_module')

不适合你。如果您的应用是从 Angular CLI 构建的,那么它应该支持开箱即用的导入和 require 语句。

例如,我在这样的 Angular 2 组件中使用 MSR:

var MediaStreamRecorder = require('msr');

【讨论】:

似乎当我确实需要时,我的 lite-server 调试在我指向的包上给了我 404...我不记得我必须为 require 指定任何相对路径,如果它在 node_modules 文件夹中?我错了吗?

以上是关于nodejs导入需要转换的主要内容,如果未能解决你的问题,请参考以下文章

nodejs需要事件来对象

Node JS - json 到 jsongraph 转换器

Nodejs的模块化

Nodejs的模块化

需要 SOAP - Node JS 包失败并在 AWS Lambda 中出现导入错误

arcgis如何导入.dat.din文件需要转换吗?