【问题标题】:How to use "import" in Node.js?如何在 Node.js 中使用“导入”?
【发布时间】:2020-09-24 04:14:02
【问题描述】:

我尝试将使用 React 和 Node.js 开发的项目部署到 Heroku,但是在发出 git push heroku master 后,我收到了错误:

2020-06-05T02:12:18.092681+00:00 app[web.1]: import express from "express";
2020-06-05T02:12:18.092682+00:00 app[web.1]: ^^^^^^^
2020-06-05T02:12:18.092682+00:00 app[web.1]:
2020-06-05T02:12:18.092683+00:00 app[web.1]: SyntaxError: Unexpected identifier
2020-06-05T02:12:18.092683+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:718:23)

我google了一下,据说Node.js不支持ES6语法,我可以用babel解决。 但是不知道怎么配置。

以下是我的文件:

.babelrc.json:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}

package.json:

{
  "name": "react_e-commerce",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "nodemon --watch backend --exec babel-node backend/server.js",
    "build": "rimraf dist && babel backend -d dist",
    "heroku-postbuild": "npm run build && cd e-commerce && npm install && npm run build"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.9.16"
  },
  "devDependencies": {
    "@babel/cli": "^7.10.1",
    "@babel/core": "^7.10.1",
    "@babel/node": "^7.10.1",
    "@babel/preset-env": "^7.10.1",
    "babel-cli": "^6.26.0",
    "mkdirp": "^1.0.4",
    "nodemon": "^2.0.4",
    "rimraf": "^3.0.2"
  },
  "engines": {
    "node": "12.4.0",
    "npm": "6.9.0"
  }
}

我的整个项目都在https://github.com/powerseed/e-commerce-React e-commerce 文件夹用于前端。

提前致谢!

【问题讨论】:

  • 可以在节点中使用导入。如果您使用的是 Node v13 或更高版本,只需将 "type": "module" 添加到您的 package.json 文件中即可。

标签: javascript node.js reactjs heroku babeljs


【解决方案1】:

如果你愿意,你可以使用 require 。以下是有关为什么有两种引入文件的方法的详细信息。 The difference between "require(x)" and "import x"

【讨论】:

    【解决方案2】:

    根据Nodejs docs,我可以使用以下命令运行node node-module.js,类似的情况可能适用于您的情况——我不熟悉您当前使用的特定节点版本,但"type":"module"选项可能会允许它——我目前正在使用 Nodejs v15。

    package.json

    {
        "type": "module"
    }
    

    node-module.js

    import * as os from 'os';
    import defaultstuff, { stuff } from './node-import-stuff.js';
    
    console.log(123 === stuff, defaultstuff, Object.keys(os));
    

    node-import-stuff.js

    export const stuff = 123;
    export default stuff;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 2017-11-24
      • 1970-01-01
      • 2022-10-19
      • 2022-12-09
      • 2020-12-26
      相关资源
      最近更新 更多