質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

440閲覧

JavaScript(ES6)の[export,import]について

unitawashi

総合スコア10

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/02/04 07:42

編集2019/02/04 08:08

前提・実現したいこと

second.jsというファイルからnameをexportしてfirst.jsにimportして表示させようとしたところ、このようなエラーが発生しました。
nameの部分に何か問題があるのだろうと検討をつけているのですが、わからなくなってしまいました。
ちなみにfirst.jsとsecond.jsは同じdistというフォルダです。

発生している問題・エラーメッセージ

node dist/first.js ``` ^ エラーメッセージ ``` (function (exports, require, module, __filename, __dirname) { import name from "./second"; ^^^^ SyntaxError: Unexpected identifier at new Script (vm.js:79:7) at createScript (vm.js:251:10) at Object.runInThisContext (vm.js:303:10) at Module._compile (internal/modules/cjs/loader.js:656:28) at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Function.Module.runMain (internal/modules/cjs/loader.js:741:12) at startup (internal/bootstrap/node.js:285:19) ### 該当のソースコード ```ここに言語名を入力 ソースコード ```JavaScriptES6 ### 試したこと nameの部分を少し変えてみたりしましたが、変わりませんでした。 ### 補足情報(FW/ツールのバージョンなど) ES6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/02/04 07:45

エラーメッセージの上に挙げてある「コード」がそのまま入力したもの、ということで間違いないでしょうか。
m.ts10806

2019/02/04 07:50

そもそもが「コード」で入っているコードが正しくないように思いますが。 なおコードブロックにはコードのみを提示してください。それ以外は再現確認をする上では弊害にしかなりません。
unitawashi

2019/02/04 07:51

ええと、すみません入力したコードは node dist/first.js です。 上にあげた別のファイルが first.js で同じフォルダというのが dist です。 (答えになってなかったらすみません)
m.ts10806

2019/02/04 07:51

ああ、nodeでしたか。[Node.js]をタグに追加しておいてください。
unitawashi

2019/02/04 08:00

タグとはどのようにして追加するのでしょうか? 無知ですみません><
m.ts10806

2019/02/04 08:03

質問を編集してください。 自身で[JavaScript]というタグを追加されていますよね。 質問編集画面でそのタグの横に続けて入力していくと良いです。
guest

回答2

0

JavaScriptはES2015というJavaScriptの仕様の2015年度版で
import構文を始めとするESModulesが定義されました。

しかしサーバサイドJavaScriptであるNode.jsは2009年に作られたものです。
ESModulesなんてものはなかった。
なので当時から構想だけは存在していたCommonJSという仕様を使って実装し、
require関数で別モジュールを読み込みましょうというルールでつくられました。

なのでNode.jsはESModulesには非対応です。
質問文のような書き方に対応しておらず、
「importは変数名?じゃあnameの部分の書き方おかしいから構文エラーだろう」と言ってるわけです。


この辺の記事を読めばなんとなくわかりますが、
Node.jsもESModulesの対応に関してはぼちぼちやっています
ESModules について
Node.jsのES Modulesサポートの現状確認と備え

揉めに揉めており、現状は条件付きサポートといった感じの対応になっています。

  • 拡張子を.mjsにする
  • nodeコマンド実行時にオプションをつける

投稿2019/02/04 08:23

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

javascript

1(function (exports, require, module, __filename, __dirname) { import name from "./second";

ES6のimport文(非同期で行うimport()でないほう)は、トップレベルにしか書けません

手動で書いたのであれば書き方がおかしいですし、コンパイルしてこのようなコードが出来上がったのであれば、Babelあるいはバンドラーの設定が正しくないと思われます。

投稿2019/02/04 07:54

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問